home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
APDL Eductation Resources
/
APDL Eductation Resources.iso
/
programs
/
misc
/
monarchs
/
!Monarchs
/
ShellLibRT
(
.txt
)
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
RISC OS BBC BASIC V Source
|
1995-02-05
|
104.2 KB
|
3,859 lines
>EvntShell:ShellLib
Squished by Lofty's !Shrink vsn 3.01 on 05-Feb-95
shell_LibraryVersion:=1.40*&64
shell_DefineConstants:G=&D00:M=&903:_MSE_SELECTBUT=4:_MSE_MENUBUT=2:_MSE_ADJUSTBUT=1:t=0:r=1:w=2:x=3:Z=0:a=1:b=2:c=3:d=4:e=6:W=7:Y=8:n=9:o=&A:s=&E:X=&502:R=&400C0:S=&400C1:T=&400C2:U=&400C3:V=&400C7:_POPUP_TYPE_TEXT=0:_POPUP_TYPE_WIMPCOLOUR=1
BJ_POPUP_TYPE_DATEPICK=2:_POPUP_TYPE_FONTPICK=4:_POPUP_TYPE_COLOUR24=8:
shell_Error:
FA%,EA$:
&606C2:
1<<31)
shell_FatalError
shell_OSCheckVersion(3)
shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
("Set Basic$File <"+
shell_GetAppName+"$BasicFile>"):
"Edit:ThrowBack"
shell_ErrorBox("Unexpected error:- "+
$+" (Internal error code "+
+")")
$:FA%=
$,"in "+
34+"EvntShell:ShellLib"):
FA%>0
$,FA%-1)
shell_ErrorBox(EA$)
shell_OK(fA$):
G,fA$
shell_FatalError:
&606C2:
shell_OSCheckVersion(3)
shell_FileExists("Resources:$.Resources.Edit.ThrowBack")
1<<31)
shell_Exit
("Set Basic$File <"+
shell_GetAppName+"$BasicFile>"):
"Edit:ThrowBack"
shell_ErrorBox("Unexpected error:- "+
$+" Internal error code "+
shell_ErrorBox(rA$):
SB%,_A%:_A%=_shell_blk%:!_A%=
:$(_A%+4)=rA$+
&600DF,_A%,17,"XMessage from "+
shell_GetAppName
&600DF,_A%,1,
shell_GetAppName
shell_GetLastSecureFileName:
c%:c%=_U%!80:
shell_GetString(_E%):
aA$,zC%:
((_E%?zC%)>31
zC%<&FF):aA$+=
(_E%?zC%):zC%+=1:
:=aA$
shell_GetEventHandler(b%,_%,UC%):
e%,i%,m%,q%,A$:
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%=
:i%=_U%!&C:A$="":
(i%!e%=b%)
i%!(e%+4)
i%!(e%+(&C+(UC%*4)))>&8000
#A$=$(i%!(e%+(&C+(UC%*4)))):m%=
e%+=48
i%!(e%+4)=_%
i%!(e%+(&C+(UC%*4)))>&8000
#A$=$(i%!(e%+(&C+(UC%*4)))):m%=
e%+=48
e%+=48
e%+=48
((e%>=q%)
m%):=A$
shell_GetEventMenu(kB%,b%,_%):
e%,i%,m%,q%,n%:
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%=
:i%=_U%!&C:A$="":
(i%!e%=b%)
shell_Tracef0("GetEventMenu:window handle matched.."):
i%!(e%+4)=_%
"n%=i%!(e%+8):
n%=-2
n%=_U%!&FC
:e%+=48:
(e%>=q%
m%):=n%
shell_GetEventListOffset(b%,f%,i%,GB%,aC%):
q%,e%,m%,d%,JB%,c%:
(!i%=0
(!i%=0)
A:!i%=
shell_HeapBlockFetch(GB%):c%=!i%:c%!0=0:c%!4=0:=0
shell_HeapBlockInfo(!i%)-8:e%=0:m%=
:d%=-1:JB%=-1:c%=!i%:
JB%<0
(c%!e%=0
c%!e%+4=0)
JB%=e%
(c%!e%=b%)
f%=-1
d%=e%:m%=
shell_Tracef0("GetEventListOffset:icon handle is not -1"):
c%!(e%+4)=f%
d%=e%:m%=
e%+=GB%
e%+=GB%
((e%>=q%)
(d%=-1
JB%<0
rId%=q%:!i%=
shell_HeapBlockExtend(!i%,GB%):c%=!i%:c%+=d%:c%!0=0:c%!4=0
d%=JB%
shell_AttachPane(b%,
cD%,l%,mA%,pA%):
a%,d%,c%,QB%,OE%:
shell_Tracef0("AttachPane:Attaching Pane Handler"):OE%=
shell_WindowGetFlags(cD%):
1<<5)=0
shell_Tracef0("AttachPane:'Pane' bit of pane window is not set, fixing.."):
shell_WindowToggleFlags(cD%,1<<5)
1<<1)
shell_Tracef0("AttachPane:'Moveable' bit of pane window is set, fixing.."):
shell_WindowToggleFlags(cD%,1<<1)
shell_GetEventListOffset(b%,-1,_U%+92,24,
shell_Tracef0("AttachPane:Creating pane event block"):d%=
shell_GetEventListOffset(b%,-1,_U%+92,24,
):a%=_U%!92+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(4):a%!&C=
shell_HeapBlockFetch(4):a%!16=
shell_HeapBlockFetch(4)
aa%!20=
shell_HeapBlockFetch(4):c%=a%!8:!c%=-1:c%=a%!&C:!c%=-1:c%=a%!16:!c%=-1:c%=a%!20:!c%=-1
:a%=_U%!92+d%:c%=a%!8:g%=0:QB%=0:
c%!g%<>-1:g%+=4:QB%+=1:
:a%!8=
shell_HeapBlockExtend(a%!8,4):c%=a%!8:c%!(QB%*4)=cD%:c%!((QB%+1)*4)=-1:a%!&C=
shell_HeapBlockExtend(a%!&C,4):c%=a%!&C:c%!(QB%*4)=l%:c%!((QB%+1)*4)=-1
a%!16=
shell_HeapBlockExtend(a%!16,4):c%=a%!16:c%!(QB%*4)=mA%:c%!((QB%+1)*4)=-1:a%!20=
shell_HeapBlockExtend(a%!20,4):c%=a%!20:c%!(QB%*4)=pA%:c%!((QB%+1)*4)=-1:
shell_AttachDataLoad(b%,f%,x%,A$,aG%):
a%,c%,d%,P$:
shell_Tracef0("AttachDataLoad:Attaching DataLoad Handler"):
b%=-1
b%=-2
x%=x%
1<<31
shell_GetEventListOffset(b%,f%,_U%+96,16,
):a%=_U%!96+d%:
a%!0=0
a%!4=0
shell_Tracef0("AttachDataLoad:This is the first DataLoad Event..."):a%!0=b%:a%!4=f%:a%!8=
shell_HeapBlockFetch(8):c%=a%!8:c%!0=x%:c%!4=-1:a%!&C=
shell_HeapBlockFetch(8):c%=a%!&C:c%!0=
shell_HeapBlockFetch(
(A$)+1):c%!4=-1:c%=c%!0:$c%=A$
shell_Tracef0("AttachDataLoad:This is another DataLoad Event..."):a%!8=
shell_HeapBlockExtend(a%!8,4):a%!&C=
shell_HeapBlockExtend(a%!&C,4):g%=0:c%=a%!8:
c%!g%<>-1:g%+=4:
:c%!g%=x%:c%!(g%+4)=-1:c%=a%!&C:c%!g%=
shell_HeapBlockFetch(
A$+1)
c%=c%!g%:$c%=A$
shell_GetCmdLineArgs:
shell_Tracef0("AttachDataLoad:cmdline ="+P$):
shell_Tracef0("AttachDataLoad:flag bit ="+
((_U%!&64
1<<5))):
shell_Tracef0("AttachDataLoad:wh% ="+
~b%):
shell_Tracef0("AttachDataLoad:type% ="+
P$<>""
(_U%!&64
1<<5)
1<<31
c%=x%
1<<31
c%=x%
shell_FileType(P$)=c%
shell_Tracef0("AttachDataLoad:Loading file.."):
shell_MessageSendDataLoad(c%,P$):_U%!&64=_U%!&64
(1<<5)
shell_AttachDataSave(b%,f%,TB%,x%,CC%,A$):
a%,c%,d%:
shell_IconIsSprite(b%,f%)
shell_OK(
shell_MessageNoArgs("SHELLMSG29"))
shell_IconSetButtonType(b%,f%,6):
TB%=0
TB%=&64
shell_Tracef0("AttachDataSave:Attaching DataSave Handler to icon "+
f%+" in window &"+
~b%):
shell_Tracef0("AttachDataSave:Handler function is '"+A$+"'"):d%=
shell_GetEventListOffset(b%,f%,_U%+72,24,
):a%=_U%!72+d%:a%!0=b%:a%!4=f%:a%!8=TB%:a%!&C=x%
Ha%!16=CC%:a%!20=
shell_HeapBlockFetch(
(A$)+1):c%=a%!20:$c%=A$:
&FF9:
TB%>&8000
'_U%!&88=
shell_HeapBlockInfo(TB%)-8
_U%!&88=TB%
TB%>&8000
'_U%!&88=
shell_HeapBlockInfo(TB%)-4
_U%!&88=TB%
:_U%!&8C=x%:_U%!&90=TB%:
shell_AttachMenu(b%,_%,n%,QC%,LC%,pC%):
_%>=0
shell_IconSetButtonType(b%,_%,3)
shell_IsWindowStatic(b%)=
shell_OK(
shell_MessageNoArgs("SHELLMSG30"))
shell_Tracef0("AttachMenu:Attaching menu handle &"+
~n%+" to window handle &"+
~b%):
shell_EventAdd(b%,_%,0,n%,""):
shell_AttachMenuMaker(b%,_%,A$):
shell_Tracef0("AttachMenuMaker:Attaching menumaker function '"+A$+"'"):
shell_EventAdd(b%,_%,1,0,A$):
shell_AttachMenuDBox(UB%,d$,bA$,YA$):
a%,c%,DB%:
shell_WindowLoaded(d$)
shell_MessageOneArg("SHELLMSG03",d$)
shell_HeapBlockFetch(&C):a%!0=
shell_HeapBlockFetch(
d$+1):c%=a%!0:$c%=d$:a%!4=
shell_HeapBlockFetch(
bA$+1):c%=a%!4:$c%=bA$:a%!8=
shell_HeapBlockFetch(
YA$+1):c%=a%!8:$c%=YA$:
&45BCE,UB%,a%:
&45BCC,,
shell_AttachClickSelect(b%,_%,A$):
shell_EventAdd(b%,_%,2,0,A$):
shell_AttachClickAdjust(b%,_%,A$):
shell_EventAdd(b%,_%,3,0,A$):
shell_AttachUserRedraw(
b%,A$):
a%,YA%:a%=
shell_HeapBlockFetch(40):!a%=b%:
&400CB,,a%:YA%=a%!32:
shell_HeapBlockReturn(a%):
1<<4)
shell_Tracef0("AttachUserRedraw:auto redraw set!!"):
shell_WindowToggleFlags(b%,1<<4)
shell_EventAdd(b%,-1,4,0,A$):
shell_AttachDrag(b%,_%,GH%,A$):
shell_EventAdd(b%,_%,6,0,A$):
shell_AttachHelpTag(b%,_%,G$):
shell_EventAdd(b%,_%,8,0,G$):
shell_EventAdd(b%,_%,UC%,n%,A$):
e%,DC%,i%,q%,m%:
yC%:e%=0:m%=
b%=-1
b%=-2
y>q%=
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!e%=b%)
i%!(e%+4)=_%
e%+=48
e%+=48
(e%>=q%
%e%=0:
(i%!e%<>0):e%+=48:
e%>=q%
_U%!&C=
shell_HeapBlockExtend(_U%!&C,48):i%=_U%!&C:i%!(e%+0)=0:i%!(e%+4)=0:i%!(e%+8)=0:i%!(e%+&C)=0:i%!(e%+16)=0:i%!(e%+20)=0:i%!(e%+24)=0:i%!(e%+28)=0:i%!(e%+32)=0:i%!(e%+36)=0:i%!(e%+40)=0:i%!(e%+44)=0
:i%!(e%+0)=b%:i%!(e%+4)=_%:
n%<>0
i%!(e%+8)=n%
:yC%=e%+(&C+(UC%*4)):
i%!yC%<>0
shell_HeapBlockReturn(i%!yC%)
:DC%=
shell_HeapBlockFetch(
A$+1):$DC%=A$:i%!yC%=DC%:
shell_EventDeleteAll(b%):
e%,n%,m%,q%,i%,y%:e%=0:n%=0:m%=
b%=-1
b%=-2
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!e%=b%)
e%+=48
(e%>=q%
Ci%!(e%+0)=0:i%!(e%+4)=0:i%!(e%+8)=0:
y%=&C
i%!(e%+y%)<>0
shell_HeapBlockReturn(i%!(e%+y%)):i%!(e%+y%)=0
shell_Tracef0("EventDeleteAll:wh%=&"+
~b%):
shell_DeleteEventDataSave(b%,-1):
shell_DeleteEventBump(b%,-1):
shell_DeleteEventSlider(b%,-1):
shell_DeleteEventBump(b%,f%):
d%,a%,q%,i%,c%:i%=_U%!&68:
shell_GetEventListOffset(b%,f%,_U%+&68,16,
shell_Tracef0("DeleteEventBump:offset%="+
d%>=0
f%=-1
shell_Tracef0("DeleteEventBump:Deleting Bump Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventBump:Deleting Bump Event (window handle was &"+
~b%+" icon handle was "+
f%+")")
shell_HeapBlockInfo(_U%!&68)-8:
d%=q%-16
SA%=i%!&C:c%=SA%!&C:
shell_HeapBlockReturn(c%!&C):
shell_HeapBlockReturn(c%!16):
shell_HeapBlockReturn(c%):
shell_HeapBlockReturn(_U%!&68):_U%!&68=0:
shell_Tracef0("DeleteEventBump:No Bump events now registered")
_U%!&68=
shell_HeapBlockExtend(_U%!&68,-16)
a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:SA%=a%!&C:
shell_HeapBlockReturn(SA%!&C):
shell_HeapBlockReturn(SA%!16):
shell_HeapBlockReturn(SA%)
d%<0:
shell_DeleteEventDataSave(b%,f%):
d%,a%,q%:
shell_GetEventListOffset(b%,f%,_U%+72,24,
d%>=0
f%=-1
shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventDataSave:Deleting DataSave Event (window handle was &"+
~b%+" icon handle was "+
f%+")")
shell_HeapBlockInfo(_U%!72)-8:
d%=q%-24
shell_HeapBlockReturn(_U%!72):_U%!72=0:
shell_Tracef0("DeleteEventDataSave:No DataSave events now registered")
_U%!72=
shell_HeapBlockExtend(_U%!72,-24)
a%=i%+d%:a%!0=0:a%!4=0:a%!8=0:a%!&C=0:a%!16=0:
shell_HeapBlockReturn(a%!20):a%!20=0
d%<0:
shell_MessageNoArgs(G$):=
shell_MessageLookup(G$,"","")
shell_MessageOneArg(G$,n$):=
shell_MessageLookup(G$,n$,"")
shell_MessageTwoArgs(G$,n$,CA$):=
shell_MessageLookup(G$,n$,CA$)
shell_MessageLookup(G$,n$,CA$):
l%,L%,j$,wC%,xB%:
G$,8)="SHELLMSG"
wC%=_U%!284:xB%=_U%!280
wC%=_U%!64:xB%=_U%!68
&61502,xB%,G$,wC%,256,n$,CA$
,,,L%;l%:
wC%?L%=&D:j$=$(wC%)
shell_WimpInit(iC%,SA$):
&400C0,iC%,&4B534154,SA$
iC%,hA%:
_U%!&64
"WimpExt_Initialise",&E,hA%
:_U%!&94=hA%:=hA%
shell_WimpInit_I(iC%,SA$):
&400C0,iC%,&4B534154,SA$
iC%,hA%:
_U%!&64
"WimpExt_Initialise",&E,hA%
:_U%!&94=hA%:
&81682,hA%:=hA%
shell_WimpCloseDown_I(hA%):
shell_LoseFonts:
_U%!&F0<>-1
"XFontMenu_Release"
_U%!&64
"WimpExt_Initialise",&E,hA%
&600DD,hA%,&4B534154:
&A1683,hA%:
_U%!&64
"XImpulse_CloseDown",_U%!&94
WimpCloseDown(hA%):
shell_LoseFonts:
_U%!&F0<>-1
"XFontMenu_Release"
_U%!&64
"WimpExt_Initialise",&E,hA%
&600DD,hA%,&4B534154:
_U%!&64
"XImpulse_CloseDown",_U%!&94
("Unset "+_shell_AppName$+"$BasicFile"):
shell_LoseFonts:
y%,c%:c%=_U%!&E8:
c%?y%>0:
&40082,y%:c%?y%-=1:
shell_FindFont(e$,xG%):
YA%,xD%:xD%=_U%!&E8:
&40081,,e$,xG%*16,_*16,0,0
YA%:xD%?YA%+=1:
xD%?YA%>=&FF
shell_OK(
shell_MessageNoArgs("SHELLMSG18"))
shell_Init:
nA%,y%,c%,P$:
wA%,C$,D$,UD%:
shell_DefineConstants:_SHELL_SENDDATALOAD_MY_REF%=0:_SHELL_SENDDATALOAD_TIME%=0:_SHELL_SENDDATALOAD_FILE$="":
_U%360,_shell_blk%260:_Q%=
shell_HeapBlockFetch(&BB8):nA%=
shell_HeapBlockFetch(48):nA%!0=0
nA%!4=0:nA%!8=0:nA%!&C=0:nA%!16=0:nA%!20=0:nA%!24=0:nA%!28=0:nA%!32=0:nA%!36=0:nA%!40=0:nA%!44=0:_U%!0=0:_U%!4=0:_U%!8=0:_U%!&C=nA%:_U%!16=1:_U%!20=0:_U%!24=0:_U%!28=0:_U%!32=-1:_U%!36=0:_U%!40=0:_U%!44=-1:_U%!48=0:_U%!52=0:_U%!56=0:_U%!60=0:_U%!64=0
_U%!68=0:_U%!72=0:_U%!76=
shell_HeapBlockFetch(256):_U%!80=0:_U%!84=-1:_U%!88=0:_U%!92=0:_U%!96=0:_U%!&64=0:_U%!&68=0:_U%!&6C=-1:_U%!&70=-1:_U%!&74=-1:_U%!&78=-1:_U%!&7C=-1:_U%!&80=0:_U%!&84=0:_U%!&88=-1:_U%!&8C=-1:_U%!&90=-1:_U%!&94=0:_U%!&98=0
_U%!&9C=0:_U%!&A0=0:_U%!&A4=0:_U%!&A8=0:_U%!&AC=0:_U%!&B0=0:_U%!&B4=0:_U%!&B8=0:_U%!&BC=0:_U%!&C0=0:_U%!&C4=0:_U%!&C8=0:_U%!&CC=0:_U%!&D0=-1:_U%!&D4=-1:_U%!&D8=0:_U%!&DC=0:_U%!&E0=0:_U%!&E4=0:_U%!&E8=
shell_HeapBlockFetch(256)
_U%!&EC=
shell_HeapBlockFetch(256):_U%!&F0=-1:_U%!&F4=0:_U%!&F8=0:_U%!&FC=0:_U%!256=0:_U%!260=1:_U%!264=0:_U%!268=0:_U%!272=0:_U%!276=0:_U%!280=0:_U%!284=0:_U%!288=-1:_U%!292=-1:_U%!296=-1:_U%!300=0:_U%!304=0:_U%!308=0:_U%!312=0:_U%!316=0:_U%!320=0
_U%!324=0:_U%!328=0:_U%!332=0:_U%!336=0:_U%!340=0:_U%!344=0:
shell_MemFill(_U%!&E8,256,0):
shell_MemFill(_U%!&EC,256,0):wA%=
shell_HeapBlockFetch(256):C$=
shell_OSVarGetVal(wA%,256,"Obey$Dir",1):
shell_HeapBlockReturn(wA%):D$=
shell_Leaf(C$),2)
_U%!&BC=
shell_HeapBlockFetch((
C$)+1):_U%!&C4=
shell_HeapBlockFetch((
D$)+1):c%=_U%!&BC:$c%=C$:c%=_U%!&C4:$c%=D$:P$=
shell_OSReadCommandArg(1):
P$<>""
LL_U%!&64=_U%!&64
1<<5:c%=
shell_HeapBlockFetch(
P$+1):$(c%)=P$:_U%!324=c%
shell_OSModuleCheckVersion("WimpExtension",1.98):
_U%!&64=_U%!&64
V/c%=
RO3_Present:
_U%!&64=_U%!&64
1<<&A
_U%!&64=_U%!&64
1<<&C:UD%=&64:
shell_PollSetInterval(UD%):
shell_PollSetPrevInterval(UD%):
ZD%:ZD%+=UD%:
shell_InitModules:
shell_InitModules:
k%:k%=
_shell_StaticList_Init:
shell_GetCmdLineArgs:
_U%!324<>0
P$=$(_U%!324)
shell_Tracef0("GetCmdLineArgs:cmdline was "+P$):=P$
shell_FileType(W$):
8,5,W$
,,x%:x%=(x%
&FFF00)>>>8:=x%
shell_FileExists(W$):
x%,B:B=5:
8,B,W$
shell_CatInfoRead(W$):
x%,CD%,ID%,IB%,TC%,B$:
8,5,W$
x%,,CD%,ID%,IB%,TC%:
="Not Found"
TC%=51
B$+="WR "
TC%=&BB
B$+="LWR"
TC%=&88
B$+="DL "
B$+=" "+
shell_StringPadLeading(
~CD%,"0",8):B$+=" "+
shell_StringPadLeading(
~ID%,"0",8):B$+=" "+
shell_StringPadLeading(
~IB%,"0",8):=B$
shell_FileGetDateStamp(W$):
x%,dF%,B:B=5:
8,B,W$
x%,,,dF%:
shell_GetAppDir:
c%:c%=_U%!&BC:=$c%
shell_GetAppDataDir:
c%:c%=_U%!&C0:=$c%
shell_GetAppName:
c%:c%=_U%!&C4:=$c%
shell_ResourcesInit:
FA$,c%,D$,C$,dD%:
wA%,EC%,bC%:D$=
shell_GetAppName:C$=
shell_GetAppDir:wA%=
shell_HeapBlockFetch(256):
shell_OSVarExists(wA%,D$+"Res$Path")
_U%!&64=_U%!&64
shell_OSVarExists(wA%,D$+"Data$Dir")
nFA$=
shell_OSVarGetVal(wA%,256,D$+"Data$Dir",1):_U%!&C0=
shell_HeapBlockFetch((
FA$)+1):c%=_U%!&C0:$c%=FA$
_U%!&C0=
shell_HeapBlockFetch((
C$)+1):c%=_U%!&C0:$c%=C$
_U%!&64
shell_FileExists(D$+"Res:Messages")
shell_MessagesInit(D$+"Res:Messages",_U%!68,_U%!64)
shell_FileExists(D$+"Res:ShellMsgs")
shell_MessagesInit(D$+"Res:ShellMsgs",_U%!280,_U%!284)
shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,bC%:
&20035,-1,5
,,EC%:
EC%=1
shell_FileExists(D$+"Res:Sprites22")
4_U%!16=
shell_SpriteAreaLoad(D$+"Res:Sprites22")
shell_FileExists(D$+"Res:Sprites")
2_U%!16=
shell_SpriteAreaLoad(D$+"Res:Sprites")
_U%!16=1
:dD%=
shell_3DEnabled:
shell_FileExists(D$+"Res:Templates3")
shell_TemplatesInit(D$+"Res:Templates3",k%)
shell_FileExists(D$+"Res:Templates")
shell_TemplatesInit(D$+"Res:Templates",k%)
shell_FileExists(C$+".Messages")
shell_MessagesInit(C$+".Messages",_U%!68,_U%!64)
shell_FileExists(C$+".ShellMsgs")
shell_MessagesInit(C$+".ShellMsgs",_U%!280,_U%!284)
shell_MessagesInit("EvntShellRes:ShellMsgs",_U%!280,_U%!284)
&20035,-1,4
,,bC%:
&20035,-1,5
,,EC%:
EC%=1
shell_FileExists(C$+".Sprites22")
1_U%!16=
shell_SpriteAreaLoad(C$+".Sprites22")
shell_FileExists(C$+".Sprites")
/_U%!16=
shell_SpriteAreaLoad(C$+".Sprites")
_U%!16=1
:dD%=
shell_3DEnabled:
shell_FileExists(C$+".Templates3")
shell_TemplatesInit(C$+".Templates3",k%)
shell_FileExists(C$+".Templates")
shell_TemplatesInit(C$+".Templates",k%)
&45BC0:
shell_HeapBlockReturn(_Q%):_Q%=
shell_HeapBlockFetch(&400):
shell_HeapBlockReturn(wA%):
shell_SpriteAreaLoad(H$):
fB%,S%,T%:S%=
(H$):T%=
#S%+16:
#S%:fB%=
shell_HeapBlockFetch(T%):!fB%=T%:fB%!4=0:fB%!8=16:fB%!&C=16:
46,521,fB%:
46,522,fB%,H$:
shell_Tracef0("SpriteLoad:Sprite file loaded at &"+
~fB%):=fB%
shell_UserSpritesBase:=_U%!16
shell_SpriteGetPtr(XC%,R$):
VB%,e%:VB%=
shell_HeapBlockFetch(21):$VB%=R$:
46,280,XC%,VB%
,,e%:
shell_HeapBlockReturn(VB%):=e%
shell_MessageExpand(g$):
L$,j$,sA%:L$="":
g$,"\")>0:sA%=
g$,"\"):L$+=
g$,sA%-1):j$=
g$,sA%+1,1):g$=
g$,sA%+2):
"A":L$+="Click ADJUST to"
"a":L$+="ADJUST"
"D":L$+="Drag with SELECT to"
"d":L$+="Drag with ADJUST to"
"G":L$+="This option is greyed out because"
"R":L$+="Move the pointer right"
"S":L$+="Click SELECT to"
"s":L$+="SELECT"
"T":L$+="This is the"
"W":L$+="This window is"
"w":L$+="window"
L$+="\"+j$
:=L$+g$
shell_OpenMenu(LA%,RA%,CB%):
A$:A$=
shell_GetEventHandler(_U%!28,_U%!32,1):
A$<>""
shell_Tracef0("OpenMenu:About to call "+"FN"+A$+"("+
_U%!28+","+
_U%!32+")"):k%=
("FN"+A$+"(_U%!28,_U%!32)")
shell_Tracef0("OpenMenu:no menumaker function registered")
CB%<>_U%!24
shell_HeapBlockExists(_U%!256)
shell_HeapBlockReturn(_U%!256):_U%!256=0
shell_HeapBlockExists(_U%!&F4)
shell_HeapBlockReturn(_U%!&F4):_U%!&F4=0
CB%=_U%!&FC
&400D4,,CB%,LA%-64,RA%:_U%!264=1
_Q%!0=LA%:_Q%!4=RA%:
&45BC5,CB%,_Q%:_U%!264=0
:_U%!24=CB%:_U%!36=LA%:_U%!40=RA%:_U%!52=_U%!28:_U%!56=_U%!32:
shell_MenuLastXPos:=_U%!36
shell_MenuLastYPos:=_U%!40
shell_MenuAttachDbox(h$):
"Menu_SetSubHandle",_U%!8,
shell_MenuString(h$),1:
shell_Tracef0("MenuAttachDbox:Dialog box ("+h$+") attached"):
shell_MessageWindow(I$,XG%,mA$,w$):
NE%,_A%:_A%=
shell_HeapBlockFetch(260):!_A%=0:$(_A%+4)=I$+
w$=""
w$="Message from "+mA$
&400DF,_A%,19,w$
&400DF,_A%,17,w$
shell_HeapBlockReturn(_A%):=NE%
shell_CreateWindow(nA$,
IC%:IC%=
shell_GetWB(nA$):IC%!64=_U%!16:
&400C1,,IC%
shell_CreateWindow2(N,l%,OG%,jG%,vG%,rA%,eE%,kA%,SB%,YB%):
Q%:Q%=
shell_HeapBlockFetch(&BB8):Q%!0=eE%:Q%!4=kA%:Q%!8=SB%:Q%!&C=YB%:Q%!16=0:Q%!20=0:Q%!24=-1:Q%!28=l%:Q%?32=7:Q%?33=2:Q%?34=OG%:Q%?35=jG%:Q%?36=3:Q%?37=1:Q%?38=2:Q%?39=0:Q%!40=0:Q%!44=rA%
Q%!48=vG%:Q%!52=0:Q%!56=317:Q%!60=&3000:Q%!68=1:Q%!72=N:Q%!76=-1:Q%!80=
$N:Q%!84=0:
&400C1,,Q%
shell_HeapBlockReturn(Q%):=h%
shell_WindowHasTitleBar(b%):=(
shell_WindowGetFlags(b%)
1<<26)
shell_WindowIsMoveable(b%):=(
shell_WindowGetFlags(b%)
1<<1)
shell_WindowIsAPane(b%):=(
shell_WindowGetFlags(b%)
1<<5)
shell_WindowIsNotBounded(b%):=(
shell_WindowGetFlags(b%)
1<<6)
shell_WindowTrapsHotKeys(b%):=(
shell_WindowGetFlags(b%)
1<<&C)
shell_WindowIsOpen(b%):=(
shell_WindowGetFlags(b%)
1<<16)
shell_WindowIsOnTop(b%):=(
shell_WindowGetFlags(b%)
1<<17)
shell_WindowHasBeenToggled(b%):=(
shell_WindowGetFlags(b%)
1<<18)
shell_WindowHasInputFocus(b%):=(
shell_WindowGetFlags(b%)
1<<20)
shell_WindowHasBackIcon(b%):=(
shell_WindowGetFlags(b%)
1<<24)
shell_WindowHasCloseIcon(b%):=(
shell_WindowGetFlags(b%)
1<<25)
shell_WindowHasToggleIcon(b%):=(
shell_WindowGetFlags(b%)
1<<27)
shell_WindowHasVScrollBar(b%):=(
shell_WindowGetFlags(b%)
1<<28)
shell_WindowHasAdjustSizeIcon(b%):=(
shell_WindowGetFlags(b%)
1<<29)
shell_WindowHasHScrollBar(b%):=(
shell_WindowGetFlags(b%)
1<<30)
shell_WindowGetFlags(b%):
l%,a%:a%=
shell_HeapBlockFetch(36):a%!0=b%:
&400CB,,a%:l%=a%!32:
shell_HeapBlockReturn(a%):=l%
shell_WindowGetTitleFlags(b%):
l%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:l%=a%!60:
shell_HeapBlockReturn(a%):=l%
shell_IconGetFlags(b%,f%):
l%,a%:a%=
shell_HeapBlockFetch(50):a%!0=b%:a%!4=f%:
&400CE,,a%:l%=a%!24:
shell_HeapBlockReturn(a%):=l%
shell_WindowTitleFlags(b%):
l%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:l%=a%!60:
shell_HeapBlockReturn(a%):=l%
shell_WindowTitleHasBorder(b%):=(
shell_WindowTitleFlags(b%)
1<<2)
shell_WindowTitleIsSprite(b%):=(
shell_WindowTitleFlags(b%)
1<<1)
shell_WindowTitleIsText(b%):=(
shell_WindowTitleFlags(b%)
1<<0)
shell_WindowTitleIsHCentred(b%):=(
shell_WindowTitleFlags(b%)
1<<3)
shell_WindowTitleIsVCentred(b%):=(
shell_WindowTitleFlags(b%)
1<<4)
shell_WindowTitleIsFilled(b%):=(
shell_WindowTitleFlags(b%)
1<<5)
shell_WindowTitleIsAAliased(b%):=(
shell_WindowTitleFlags(b%)
1<<6)
shell_WindowTitleIsIndirected(b%):=(
shell_WindowTitleFlags(b%)
1<<8)
shell_WindowGetTitle(b%):
T$,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:
(a%!32
1<<26)
((a%!60)
256)=0
T$=$(a%+76)
T$=$(!(a%+76))
shell_HeapBlockReturn(a%):=T$
shell_WindowTitleBufferLength(b%):
w%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:
((a%!60)
256)=0
w%=&C
w%=a%!84
shell_HeapBlockReturn(a%):=w%
shell_WindowMoveToIcon(b%,kE%,f%,mA%,pA%):
s%,p%:s%=
shell_HeapBlockFetch(50):p%=
shell_HeapBlockFetch(36):p%!20=0:
shell_OSCheckVersion(3)
kE%=-1
!p%=-2
!p%=kE%
&400CB,,p%
:s%!0=kE%:s%!4=f%:
&400CE,,s%:
shell_WindowMoveTo(b%,s%!8+mA%-p%!20,s%!20+pA%):
shell_HeapBlockReturn(s%):
shell_HeapBlockReturn(p%):
shell_WindowMoveTo(b%,LA%,RA%):
OF%,EF%,d%,a%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:OF%=a%!&C-a%!4:EF%=a%!16-a%!8:a%!4=LA%:a%!8=RA%:a%!&C=LA%+OF%:a%!16=RA%+EF%:
&400C5,,a%:
&400C6,,a%
shell_IsWindowStatic(b%)
shell_OpenWindowStatic(b%)
shell_OpenWindowDynamic2(b%,0,0)
shell_HeapBlockReturn(a%):
shell_WindowBringToTop(b%):
AC%:AC%=
shell_HeapBlockFetch(256):AC%!0=b%:
&400CB,,AC%:AC%!28=-1:
&400E7,2,AC%,b%:
&400C7,0,AC%:
shell_HeapBlockReturn(AC%):
shell_UpdateWindow(h%,eE%,kA%,SB%,YB%):
a%:a%=
shell_HeapBlockFetch(a%):a%!0=h%:a%!4=eE%:a%!8=kA%:a%!&C=SB%:a%!16=YB%:
&400C9,,a%
&400CB,,a%:
shell_HeapBlockReturn(a%):
shell_OpenWindowDynamic2(b%,mA%,pA%):
k%,FB%:FB%=
shell_HeapBlockFetch(20):_U%!20=b%:
&400CF,,FB%:
&400D4,,b%,FB%!0+mA%,FB%!4+pA%:
shell_HeapBlockReturn(FB%):
shell_ClaimKeypress:
_U%!20<>0
&400D4,,-1:k%=
shell_DeleteWindow(_U%!20):_U%!20=0
shell_OpenWindow(b%,iE%,ZC%):
d%,a%,v%,g%,XF%,HB%,bA%,AB%:
vB%,NC%,YB%,qE%,xF%,xC%,mC%:d%=
shell_GetEventListOffset(b%,-1,_U%+304,&C,
d%>=0
/ga%=_U%!304+d%:c%=a%!8:
shell_Tracef0("OpenWindow:About to call "+"FN"+$c%):xC%=
("FN"+$c%):
xC%=0
:NC%=
:YB%=
shell_HeapBlockFetch(40):YB%!0=b%:
&400CB,,YB%:
(YB%!32
&80000)=&80000
shell_HeapBlockReturn(YB%):mC%=
shell_HeapBlockFetch(20):
&400CF,,mC%:_Q%!0=b%:
&400CB,,_Q%
&400C5,,_Q%
shell_GetEventListOffset(b%,-1,_U%+92,24,
d%>-1
IJa%=(_U%!92)+d%:MC%=a%!8:hD%=a%!&C:yB%=a%!16:RC%=a%!20:_Q%!0=b%:
ZC%>0
HB%=ZC%
HB%=-1
HB%=_Q%!28
&400C5,,_Q%:
&400CB,,_Q%:
&400C6,,_Q%
shell_HeapBlockFetch(40):g%=0:
MC%!g%<>-1:v%!0=MC%!g%:
XF%=0
XF%=v%!0
c7qE%=v%!0:
&400CB,,v%:
mC%!16=-9
mC%!16>-5
vB%=hD%!g%:
0,1:bA%=v%!16-v%!8:AB%=v%!&C-v%!4:v%!4=_Q%!4+yB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16+RC%!g%:v%!8=v%!16-bA%
2:bA%=v%!16-v%!8:AB%=_Q%!&C-_Q%!4:v%!4=_Q%!4+yB%!g%:v%!&C=_Q%!&C:v%!16=_Q%!16+RC%!g%:v%!8=v%!16-bA%
3:bA%=_Q%!16-_Q%!8:AB%=v%!&C-v%!4:v%!4=_Q%!4+yB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16:v%!8=_Q%!8+RC%!g%
4:bA%=v%!16-v%!8:AB%=_Q%!&C-_Q%!4:v%!4=_Q%!4+yB%!g%:v%!&C=_Q%!&C:v%!16=_Q%!8+bA%+RC%!g%:v%!8=v%!16+bA%
5:bA%=_Q%!16-_Q%!8:AB%=v%!&C-v%!4:v%!4=_Q%!&C-AB%+yB%!g%:v%!&C=v%!4+AB%:v%!16=_Q%!16:v%!8=_Q%!8
v%!28=HB%
v%!28=xF%
&400C5,,v%
:xF%=v%!0:g%+=4:
_Q%!28=qE%:
&400C5,,_Q%
shell_HeapBlockReturn(v%)
_Q%!0=b%:
&400CB,,_Q%
HB%=-2
_Q%!28=-2
ZC%=-1
_Q%!28=-1
&400C5,,_Q%
shell_HeapBlockReturn(mC%):
shell_CloseWindow(b%):
d%,a%,MC%,hD%,yB%,RC%,r%,xC%:d%=
shell_GetEventListOffset(b%,-1,_U%+308,&C,
d%>=0
ha%=_U%!308+d%:c%=a%!8:
shell_Tracef0("CloseWindow:About to call "+"FN"+$c%):xC%=
("FN"+$c%):
xC%=0
shell_HeapBlockFetch(60):
shell_GetEventListOffset(b%,-1,_U%+92,24,
d%>-1
la%=(_U%!92)+d%:hD%=a%!&C:yB%=a%!16:RC%=a%!20:g%=0:MC%=a%!8:
MC%!g%<>-1:r%!0=MC%!g%:
&400C6,,r%:g%+=4:
:r%!0=b%:
&400C6,,r%
shell_HeapBlockReturn(r%):
shell_GetDynamicWindowHandle:=_U%!20
shell_DeleteWindow(h%):
r%:r%=
shell_HeapBlockFetch(20):
h%<>0
oktodeletew(h%)
shell_EventDeleteAll(h%):
shell_RemoveHandleFromWindowList(h%):
h%=_U%!20
_U%!20=0
shell_RemoveStaticWindowFromList(h%)
:r%!0=h%:
&400C3,,r%:h%=0
shell_HeapBlockReturn(r%):=h%
oktodeletew(h%):=-1
oktoclosew(h%):=-1
cliprect(A,
HG%):
QA%,TA%:
lwaorigin(A,QA%,TA%):cA%=A!24-QA%:lA%=A!28-TA%:wG%=A!32-QA%:HG%=A!36-TA%:
poll(qB%,lD%):
_U%!&64
"WimpExt_PrePoll"
&400C7,qB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,PA%
shell_Poll_I(qB%,lD%):
_U%!&64
"WimpExt_PrePoll"
&400C7,qB%,_Q%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,gB%
&81686,gB%,,lD%:=gB%
shell_PollIdle(qB%,lD%):
_U%!&64
"WimpExt_PrePoll"
&400E1,qB%,_Q%,ZD%
_U%!&64
"WimpExt_Action",_U%!&94,_Q%,gB%
shell_PollSetInterval(ME%):SF%=ME%:
shell_PollSetPrevInterval(ME%):ZG%=ME%:
shell_PollReadInterval:=SF%
shell_PollReadPrevInterval:=ZG%
shell_DoBackgroundTask:
shell_IconIsDraggable(b%,f%):
l%:l%=
shell_IconGetFlags(b%,f%):c%=(l%
&6000):
c%=&6000=
shell_IconIsSprite(b%,f%):
l%,c%:l%=
shell_IconGetFlags(b%,f%):c%=(l%
1<<1):
c%=(1<<1)
shell_IconDragBox(b%,f%):
a%,H,I,tA%,l%,YA%,VF%,iF%,KC%,IA$:
CC%,R$:tA%=
shell_GetEventListOffset(b%,f%,_U%+72,24,
tA%>=0
xna%=_U%!72+tA%:CC%=a%!16:R$=
shell_IconGetData(b%,CC%):
R$=""
shell_OK(
shell_MessageNoArgs("SHELLMSG28"))
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!a%=b%:
&400CC,,a%:H=a%!4-a%!20:I=a%!16-a%!24:iF%=a%!68:a%!4=f%:
&400CE,,a%:!a%=b%:a%!4=5:l%=a%!24:KC%=a%!32:a%!8=a%!8+H:a%!&C=a%!&C+I:a%!16=a%!16+H:a%!20=a%!20+I:a%!24=0:a%!28=0
Ja%!32=&7FFFFFFF:a%!36=&7FFFFFFF:
6,&A1,28
,,YA%:VF%=((YA%
2)=2):
YA%=l%:
&IA$=
shell_IconGetCommand(KC%,"s")
shell_OK(
shell_MessageNoArgs("SHELLMSG19"))
IA$<>""
&42400,&85,iF%,IA$,a%+8:_U%!&64=_U%!&64
&400D0,,a%
&400D0,,a%
shell_HeapBlockReturn(a%)
shell_Tracef0("IconDragBox:WARNING! no user drag handler registered for this icon!"):
shell_Tracef0("IconDragBox:now checking for a slider drag event.."):tA%=
shell_GetEventListOffset2(b%,f%,_U%+332,32,
shell_Tracef0("IconDragBox:event offset is "+
tA%):
tA%>=0
shell_HandleSlider(b%,f%,tA%)
shell_HandleAttachedMenu(_Q%,b%,f%):
f%<>-1
b%>-1
shell_GetEventMenu(_Q%!8,b%,f%):
n%<>0
shell_HandleMenuOpen(_Q%,n%,b%,f%,
shell_DoOLEHandling:
shell_OLEInProgress
shell_OLEScanLinkedFiles
shell_Action(sG%):
A$,n%,h$,tA$,WB%,BB%,OB%,eD%:
b%,f%,k%,_temp28%,_temp32%,_temp24%,_temp%,IE%:
YC%,d%,AG%:
(AG%-ZD%)>0:ZD%+=SF%:
shell_DoOLEHandling:
shell_DoBackgroundTask:
(_U%!&64
1<<&B)
shell_Slider
shell_RedrawWindow(_Q%!0)
shell_OpenWindow(_Q%!0,
shell_CloseWindow(_Q%!0)
shell_PointerLeavingWindow(_Q%)
shell_PointerEnteringWindow(_Q%)
6:_U%!28=_Q%!&C:_U%!32=_Q%!16:BB%=_Q%!0:OB%=_Q%!4:_U%!272=_Q%!0:_U%!276=_Q%!4:_U%!320=_Q%!8:_temp28%=_Q%!&C:_temp32%=_Q%!16:f%=_Q%!16:
shell_Tracef0("Action:Mouse_Click event detected")
shell_Tracef0("Action:Window Handle was &"+
~_Q%!&C+" Icon Handle was "+
_Q%!16):
_Q%!&C=_U%!288
_Q%!16=_U%!292
shell_HandleBumpIcons(_U%!296,_Q%!&C,_Q%!16,_Q%!8)
_U%!288=-1:_U%!292=-1:_U%!296=-1:
_Q%!16>=0
shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+&68,16,0):
shell_Tracef0("DEBUG::bump event offset is "+
d%>=0
shell_HandleBumpIcons(d%,_Q%!&C,_Q%!16,_Q%!8)
(_Q%!8=64)
shell_IconIsDraggable(_Q%!&C,_Q%!16):
<a$="Icon is draggable":
shell_IconDragBox(_Q%!&C,_Q%!16)
a$="Icon is not draggable"
shell_Tracef0("Action:"+a$)
_Q%!8
shell_ActionSelectButton
shell_ActionMenuButton
shell_ActionAdjustButton
_U%!&64
&42401:_U%!&64=_U%!&64
:_U%!&80=0:
(_U%!&64
1<<&B)=0
shell_GetEventHandler(_U%!28,_U%!32,6):
A$<>""
shell_Tracef0("Action:Drag event detected - function is "+A$):k%=
("FN"+A$+"(_temp28%,_temp32%)")
shell_Tracef0("Action:Drag event detected - no handler function"):
shell_SendDataSave(_U%!28,_U%!32)
_U%!&64=_U%!&64
1<<&B
shell_Tracef0("Action:keypress is="+
_Q%!24):
_Q%!24
&D,394,398,399,410,430,431:eD%=
shell_WritableIconHandler(_Q%!0,_Q%!4,_Q%!24)
shell_HotKeyProcess(_Q%!24)
shell_Tracef0("Action:Keypress not claimed, passing it on"):
&400DC,_Q%!24
shell_Tracef0("Action:Keypress claimed by this application")
shell_ActionMenuSelect(_Q%)
17,18:
shell_Receive(_Q%)
shell_UserMessageAcknowledge(_Q%)
shell_ActionSelectButton:
d%,NA%,S$,DF%:
shell_Tracef0("ActionSelectButton:Mouse Button was SELECT"):
_U%!32>=0
A=d%=
shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+340,24,
d%=-1
d%>=0
DF%=!(_U%!340+d%+16):
_POPUP_TYPE_DATEPICK:NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_DatePickerOpen(NA%!0,NA%!8,NA%!4,S$)
_POPUP_TYPE_FONTPICK:NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_FontPickerOpen(NA%!0,NA%!8,NA%!4,S$)
_POPUP_TYPE_COLOUR24:NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_ColourPickerOpen(NA%!0,NA%!8,NA%!4,S$)
_POPUP_TYPE_TEXT:
shell_HandleMenuOpen(_Q%,!(_U%!340+d%+20),_Q%!&C,_Q%!16,
_POPUP_TYPE_WIMPCOLOUR:
shell_MenuTickOnly1(!(_U%!340+d%+20),
shell_IconGetBGColour(_Q%!&C,!(_U%!340+d%+8)))
99,"Unknown popup type detected"
shell_HandleAttachedMenu(_Q%,_U%!28,_U%!32):
_U%!32=0
shell_HandleAttachedDataSave(_Q%,_U%!28,_U%!32)
m7A$=
shell_GetEventHandler(_U%!28,_U%!32,2):
A$<>""
shell_IconSlab(4,_U%!28,_U%!32):
shell_Tracef0("ActionSelectButton:About to call "+"FN"+A$+"(&"+
~_temp28%+","+
_temp32%+")"):k%=
("FN"+A$+"(_temp28%,_temp32%)")
_U%!32=0
_U%!28=_U%!20
&400D4,,-1
shell_ActionMenuButton:
c%,n%,gC%,d%:gC%=
shell_Tracef0("ActionMenuButton:Mouse Button was MENU"):
_Q%!16>=0
shell_GetEventListOffset2(_Q%!&C,_Q%!16,_U%+340,24,
!(_U%!340+d%+16)=1
shell_MenuTickOnly1(!(_U%!340+d%+20),
shell_IconGetBGColour(_Q%!&C,!(_U%!340+d%+8)))
!(_U%!340+d%+16)=2
0NA%=_U%!340+d%:
NA%!&C=-1
S$=""
S$=$(NA%!&C)
shell_DatePickerOpen(NA%!0,NA%!8,NA%!4,S$)
shell_HandleMenuOpen(_Q%,!(_U%!340+d%+20),_Q%!&C,_Q%!16,
shiftmenuclick(_Q%!&C,_Q%!16)
shell_Tracef0("ActionMenuButton:Checking menu events.."):
shell_Tracef0("ActionMenuButton:button="+
_Q%!8+" _Q%!12="+
_Q%!&C+" _Q%!16="+
_Q%!16):
_Q%!16>=0
shell_GetEventMenu(_Q%!8,_Q%!&C,_Q%!16)
(n%<>0
_Q%!&C>0
_Q%!16>=0)
shell_GetEventMenu(_Q%!8,_Q%!&C,-1)
shell_Tracef0("ActionMenuButton:Menu handle is:&"+
~n%):
n%<>0
shell_HandleMenuOpen(_Q%,n%,_Q%!&C,_Q%!16,gC%)
shell_HandleMenuOpen(_Q%,n%,b%,f%,gC%):
s%,p%:
shell_OpenMenu(_Q%!0,_Q%!4,n%)
shell_HeapBlockFetch(50):p%=
shell_HeapBlockFetch(36):s%!0=b%:s%!4=f%:
&400CE,,s%:p%!0=b%:
&400CB,,p%:
shell_OpenMenu(p%!4+s%!16+64,_Q%!4,n%):
p%!4+s%!16+64,_Q%!4:
shell_HeapBlockReturn(s%):
shell_HeapBlockReturn(p%)
shell_ActionMenuSelect(_Q%):
rD%,WB%,YC%,IE%,k%,ND%,d%:d%=
shell_GetEventListOffset2(_U%!28,_U%!32,_U%+340,24,
d%>=0
shell_DoPopupSelect(_Q%,d%)
shell_HeapBlockFetch(256):
shell_Tracef0("ActionMenuSelect:Menu_Select event detected"):
&400CF,,_shell_blk%:WB%=
shell_HeapBlockFetch(256):
_U%!24=_U%!&FC
YC%=0:_U%!264=1
shell_CheckSelection(_Q%):
YC%>-1
_U%!264=1
_U%!264=0
_U%!264>0
"FontMenu_DecodeFontMenu",_Q%+YC%,WB%
IE%=1
shell_Tracef0("ActionMenuSelect:FontMenu selection ("+
shell_GetString(WB%)+")"):
shell_FontMenuSelectFont(
shell_GetString(WB%),_U%!260):
_shell_FontMenuSelFN$=""
&400D5,,_U%!24,_Q%,WB%:A$=
shell_GetEventHandler(_U%!52,_U%!56,0):_temp%=WB%:$_temp%=
shell_StringStripTrailing($_temp%," "):
A$<>""
("FN"+A$+"($_temp%)")
_shell_FontMenuSelFN$<>""
("FN"+_shell_FontMenuSelFN$+"(FNshell_FontMenuGetLastSelectedFont)")
shell_HeapBlockReturn(WB%):
_U%!264=0
&45BC4,_U%!24,_Q%
rD%,,ND%:
shell_MenuCallHandler(rD%,ND%)
_shell_blk%!8=1
shell_HeapBlockExists(_U%!&E0)
_temp%=_U%!&E0:
$_temp%<>""
("FN"+$_temp%+"(_U%!52,_U%!56)")
shell_OpenMenu(_U%!36,_U%!40,_U%!24)
_shell_FontMenuSelFN$=""
shell_HeapBlockReturn(ND%):
shell_ActionAdjustButton:
l%,A$,k%,kC%,g%:kC%=
shell_HeapBlockFetch(&C+(
shell_WindowCountIcons(_U%!28)*32)):
shell_Tracef0("Action:Mouse Button was ADJUST"):
_U%!28>0
&400D6,_U%!28,kC%,&F000,&B000:g%=0:
kC%!g%<>-1:
kC%!g%=_U%!32
shell_IconSet(_U%!28,_U%!32,1)
g%+=4:
_U%!32=0
shell_HandleAttachedDataSave(_Q%,_U%!28,_U%!32)
)7A$=
shell_GetEventHandler(_U%!28,_U%!32,3):
A$<>""
shell_IconSlab(1,_U%!28,_U%!32):k%=
("FN"+A$+"(_temp28%,_temp32%)")
shell_HeapBlockReturn(kC%):
shiftmenuclick(b%,f%):=
shell_IconSlab(kB%,b%,f%):
a%:a%=
shell_HeapBlockFetch(50):a%!8=kB%:a%!&C=b%:a%!16=f%:
&81680,,a%:a%!8=0:
&81680,,a%:
shell_HeapBlockReturn(a%):
shell_PointerLeavingWindow(_Q%):
s%,k%:s%=
shell_HeapBlockFetch(&C):
&400D6,!_Q%,s%,&3F0000,&F<<16:
!s%<>-1
K+k%=
("FN"+
shell_IconGetData(!_Q%,!s%))
shell_HeapBlockReturn(s%):
shell_PointerEnteringWindow(_Q%):
s%,k%,b%:b%=_Q%!0:s%=
shell_HeapBlockFetch(&C):
&400D6,b%,s%,&3F0000,&E<<16:
!s%<>-1
[)k%=
("FN"+
shell_IconGetData(b%,!s%))
shell_HeapBlockReturn(s%):
shell_RedrawWindow(h%):
YD%,A$,QA%,TA%,a%,s%:
shell_HeapBlockFetch(&C):
&400D6,h%,s%,&3F0000,&D<<16:
!s%<>-1
m!A$=
shell_IconGetData(h%,!s%)
shell_HeapBlockReturn(s%):a%=
shell_HeapBlockFetch(&64):
A$=""
t&A$=
shell_GetEventHandler(h%,-1,4)
shell_FatalError
wWa%!0=h%:
&400C8,,a%
YD%:QA%=a%!4-a%!20:TA%=a%!16-a%!24:
&81681,,a%:
A$<>""
}/k%=
("FN"+A$+"("+
a%+","+
QA%+","+
TA%+")")
&400CA,,a%
shell_HeapBlockReturn(a%):
shell_Receive(_Q%):
c%,k%:
_Q%!16
shell_Exit:
shell_DataSave(_Q%)
shell_DataSaveAck(_Q%)
shell_DataLoad(_Q%,
shell_DataLoadAck(_Q%)
shell_DataLoad(_Q%,
shell_RAMFetch(_Q%)
shell_RAMTransmit(_Q%)
shell_Message_PreQuit(_Q%)
_U%!&A4>0
shell_Tracef0("Receive:PaletteChange message received"):c%=_U%!&A4:k%=
("FN"+$c%)
shell_Message_SaveDesktop(_Q%)
shell_Message_Shutdown(_Q%)
shell_InteractiveHelp(_Q%)
shell_MenuWarning(_Q%)
shell_Message_ModeChange(_Q%)
_U%!&A8>0
shell_Tracef0("Receive:TaskInitialise message received"):c%=_U%!&A8:k%=
("FN"+$c%+"("+
(_Q%!4)+","+
shell_GetString(_Q%+28)+
34+")")
_U%!&D0=-1
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!4:
shell_StrongHlpMsg("Help_Install -DieWithTask "+
shell_GetAppDir+"."+
shell_GetAppName):c%=_U%!&D8:
$c%<>""
shell_HelpWord($c%):
shell_HeapBlockReturn(_U%!&D8):_U%!&D8=0
_U%!&AC>0
shell_Tracef0("Receive:TaskCloseDown message received"):c%=_U%!&AC:k%=
("FN"+$c%)
_Q%!4=_U%!&D0
_U%!&D0=-1
shell_Tracef0("Receive:TaskNameIs message received"):
shell_GetString(_Q%+28)="StrongHelp"
_U%!&D0=_Q%!20
shell_ScanForHelp
&80140:
shell_HandlePrintFile(_Q%)
&80143:
shell_HandlePrintError(_Q%)
&80145:
shell_HandlePrintTypeOdd(_Q%)
&80147:
shell_HandleSetPrinter(_Q%)
shell_HandleUnknownMessage2(_Q%)
shell_Message_ModeChange(_Q%):
d%,g%,pB%,p%:pB%=_U%!&B8:
_U%!&A0>0
shell_Tracef0("Message_ModeChange:ModeChange message received"):c%=_U%!&A0:k%=
("FN"+$c%)
shell_HeapBlockFetch(&64):
pB%<>0
shell_Tracef0("Message_ModeChange:Checking static window list for pane events"):
pB%!g%<>-1:d%=
shell_GetEventListOffset(pB%!g%,-1,_U%+92,24,
d%>-1
shell_Tracef0("Message_ModeChange:Static window handle found"):
shell_WindowIsOpen(pB%!g%)
shell_Tracef0("Message_ModeChange:Window is open.."):!p%=pB%!g%:
&400C6,,p%:
shell_OpenWindow(pB%!g%,0,-1)
:g%+=4:
shell_HeapBlockReturn(p%):
shell_Message_Shutdown(_Q%):
_U%!312>0
shell_Tracef0("Message_Shutdown:Shutdown message received"):c%=_U%!312:k%=
("FN"+$c%)
shell_HandleUnknownMessage2(_Q%):
_Q%!16
&43B00:b$=$(_Q%+20):
b$,30)="EvntShellLib:ShellDBug started"
_U%!&64
<r_U%!&64=(_U%!&64
1<<4):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+
shell_GetAppName)
b$,25)="EvntShellLib:TraceInitAck"
_U%!&64=(_U%!&64
1<<4)
b$,20)="EvntShellLib:TraceOn"
shell_TraceOn
b$,21)="EvntShellLib:TraceOff"
shell_TraceOff
b$,28)="EvntShellLib:ListClickSelect"
shell_ListClickSelect
b$,28)="EvntShellLib:ListClickAdjust"
shell_ListClickAdjust
b$,25)="EvntShellLib:ListHelpTags"
shell_ListHelpTags
shell_HandleUnknownMessage(_Q%):
shell_HandleUnknownMessage(_Q%):
shell_AttachPreQuitHandler(A$):
c%,k%:
_U%!300>0
shell_HeapBlockReturn(_U%!300)
h<_U%!300=
shell_HeapBlockFetch(
A$+1):c%=_U%!300:$c%=A$:
shell_AttachShutdownHandler(A$):
c%,k%:
_U%!312>0
shell_HeapBlockReturn(_U%!312)
t<_U%!312=
shell_HeapBlockFetch(
A$+1):c%=_U%!312:$c%=A$:
shell_AttachModeChangeHandler(A$):
c%,k%:
_U%!&A0>0
shell_HeapBlockReturn(_U%!&A0)
J_U%!&A0=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A0:$c%=A$:k%=
("FN"+A$):
shell_AttachPaletteChangeHandler(A$):
c%,k%:
_U%!&A4>0
shell_HeapBlockReturn(_U%!&A4)
J_U%!&A4=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A4:$c%=A$:k%=
("FN"+A$):
shell_AttachTaskInitialiseHandler(A$):
c%,k%:
_U%!&A8>0
shell_HeapBlockReturn(_U%!&A8)
<_U%!&A8=
shell_HeapBlockFetch(
A$+1):c%=_U%!&A8:$c%=A$:
shell_AttachTaskCloseDownHandler(A$):
c%,k%:
_U%!&AC>0
shell_HeapBlockReturn(_U%!&AC)
<_U%!&AC=
shell_HeapBlockFetch(
A$+1):c%=_U%!&AC:$c%=A$:
shell_RAMFetch(_Q%):
KH%,XE%,ZE%:ZE%=
_U%!&90>&8000
shell_Tracef0("RAMFetch:RAMFetch called.."):_Q%!&C=_Q%!8:_Q%!16=7:XE%=_U%!&88:
_U%!&8C=&FF9
_U%!&90+=4
(XE%-_U%!&80)<_Q%!24
_Q%!24=XE%-_U%!&80:ZE%=
shell_Tracef0("RAMFetch:Sending block")
&400F1,_U%!&94,_U%!&90+_U%!&80,_Q%!4,_Q%!20,_Q%!24:
&400E7,17,_Q%,_Q%!4:_U%!&78=_Q%!8:_U%!&80+=_Q%!24:
_U%!&80=0
shell_RAMTransmit(_Q%):
d%,a%,cA$,c%:
_Q%!&C=_U%!&70
$_U%!&80+=_Q%!24:
_Q%!24<_U%!&84
shell_Tracef0("RAMTransmit:Last block received"):d%=
shell_GetEventListOffset(_U%!28,_U%!32,_U%+96,16,
):a%=_U%!96+d%:
shell_Tracef0("RAMTransmit:_U%!28="+
_U%!28):
shell_Tracef0("RAMTransmit:_U%!32="+
_U%!32)
shell_Tracef0("RAMTransmit:offset%="+
d%):c%=_U%!&9C:cA$=
shell_GetString(c%+44):
shell_UserFNLoadFile(c%!40,_U%!&98,a%!8,cA$,_U%!&84,a%)
shell_Tracef0("RAMTransmit:Block received"):
_U%!&80>_U%!&84
shell_Tracef0("RAMTransmit:Increasing buffer size.."):_U%!&98=
shell_HeapBlockExtend(_U%!&98,_U%!&80,_U%!&84)
:_Q%!&C=_Q%!8:_Q%!16=6:_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
&400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8
shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
shell_OK(
shell_MessageNoArgs("SHELLMSG15"))
shell_LoadFile(_G%):
v$,hB%,SD%,PB%:v$=
shell_GetString(_Q%+44):hB%=
shell_FileLength(v$):
hB%<0
shell_OK(
shell_MessageNoArgs("SHELLMSG16"))
PPB%=
shell_HeapBlockFetch(hB%):
&20008,16,v$,PB%,0
;SD%:
shell_VFlag(SD%)
shell_HeapBlockReturn(PB%):
shell_OK(
shell_MessageNoArgs("SHELLMSG17"))
shell_Tracef0("LoadFile:File "+v$+" loaded ok at &"+
~PB%)
:=PB%
shell_VFlag(SD%):=((SD%
1)=1)
shell_CheckType(x%,rB%,sB%):
AH%,g%,m%,c%,AD%:g%=0:m%=-1:AD%=
_U%!&64
_U%!&64=_U%!&64
rB%!g%<>-1:c%=rB%!g%:
1<<31
c%=c%
1<<31:AD%=
c%=x%
m%=g%:
BL_U%!&64=_U%!&64
1<<1:
shell_Tracef0("CheckType:Top Bit Load detected..")
:g%+=4:
(x%>=4096)
m%=-1
m%>-1
shell_Tracef0("CheckType:File type OK "+
~rB%!m%)
shell_Tracef0("CheckType:File type NOT ok "+
m%<>-1
shell_Exit:
xB%:xB%=_U%!68:
&61504,xB%:
&2001E,7,,xB%:
shell_Tracef0("Exit:Application closing down"):
shell_TraceExit:
&606C2:
&600D0,,-1:
shell_WimpCloseDown_I(_U%!&94):
shell_DataLoad(_Q%,sB%):
MH%,d%,a%,_temp%,rB%,x%,i$:
shell_DataOpenOKToLoad(sB%,_Q%!40)
kdx%=_Q%!40:i$=
shell_GetString(_Q%+44):
shell_Tracef0("DataLoad:DataLoad message received"):
_U%!96<>0
d%=-1
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
d%=-1
shell_GetEventListOffset(_Q%!20,-1,_U%+96,16,
d%>-1
4a%=_U%!96+d%:
shell_CheckType(_Q%!40,a%!8,sB%)
shell_Tracef0("DataLoad:File type recognised (&"+
~_Q%!40+")"):WG%=_Q%!&C:_Q%!&C=_Q%!8:_Q%!16=4:
&400E7,18,_Q%,_Q%!4:
_U%!&64
PB%=-1:_U%!&64=_U%!&64
shell_LoadFile(WG%=_U%!&6C)
shell_UserFNLoadFile(x%,PB%,a%!8,i$,_Q%!36,a%):
_U%!&9C<>0
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=0
shell_Tracef0("DataLoad:File type NOT recognised (&"+
~_Q%!40+")")
shell_DataOpenOKToLoad(sB%,x%):
w%,JE%,TA$,OA$:
shell_Tracef0("DataOpenOKToLoad:Message reason code was 3, normal drag load..")
shell_Tracef0("DataOpenOKToLoad:Message reason code was 5, double click load.."):JE%=
shell_HeapBlockFetch(256):TA$=
shell_OSVarGetVal(JE%,256,"Alias$@RunType_"+
~x%,1):
shell_Tracef0("DataOpenOKToLoad:Alias$@RunType="+TA$)
shell_HeapBlockReturn(JE%):OA$=
shell_Branch(TA$):
shell_Tracef0("DataOpenOKToLoad:dbug "+OA$):
shell_Leaf(OA$)="!"+
shell_GetAppName
shell_UserFNLoadFile(x%,PB%,rB%,_filename$,_file_size%,a%):
g%,m%,c%,k%:g%=0:m%=-1:
rB%!g%<>-1:c%=rB%!g%:
1<<31
c%=c%
1<<31
c%=x%
m%=g%
[g%+=4:
:c%=a%!&C:k%=
("FN"+$(c%!m%)+"("+
PB%+","+
x%+",_filename$,"+
_file_size%+")"):
shell_DataSave(_Q%):
c%,d%,a%,y%:
shell_Tracef0("DataSave:DataSave message received"):
_Q%!4<>_U%!&94
shell_GetEventListOffset(_Q%!20,_Q%!24,_U%+96,16,
d%>-1
2a%=_U%!96+d%:
shell_CheckType(_Q%!40,a%!8,
shell_Tracef0("DataSave:Filetype recognized (&"+
~_Q%!40+")"):
shell_TopBitLoadInProgress
shell_Tracef0("DataSave:'no load' flag set"):
shell_Tracef0("DataSave:Sending Message_DataSaveAck"):_Q%!0=256:_Q%!&C=_Q%!8:_Q%!36=-1:_Q%!16=2:$(_Q%+44)=
shell_GetAppDir+".ScrapFile"+
&400E7,18,_Q%,_Q%!4
shell_HeapBlockReturn(_U%!&9C):_U%!&9C=
shell_HeapBlockFetch((_Q%!0)+8):c%=_U%!&9C:
_Q%!0
4:c%!y%=_Q%!y%:
y%:_U%!28=_Q%!20:_U%!32=_Q%!24:_U%!&80=0:_U%!&84=_Q%!36:_U%!&98=
shell_HeapBlockFetch(_Q%!36):_Q%!0=28:_Q%!&C=_Q%!8:_Q%!16=6
_Q%!20=_U%!&98+_U%!&80:_Q%!24=_U%!&84:
&400E7,18,_Q%,_Q%!4:_U%!&70=_Q%!8:
shell_Tracef0("DataSave:Sending Message_RAMFetch")
shell_Tracef0("DataSave:Filetype NOT recognized")
shell_TopBitLoadInProgress:
_U%!&64
shell_SendDataSave(b%,f%):
a%,GA%,tB%,d%,hB%,k%:tB%=
shell_HeapBlockFetch(30):
&400CF,,tB%:d%=
shell_GetEventListOffset(b%,f%,_U%+72,24,
d%=-1
d%=-2
0dk%=
shell_MessageWindow(
shell_MessageNoArgs("SHELLMSG13"),0,"",
shell_MessageNoArgs("warning"))
a%=(_U%!72)+d%:
a%!8>&8000
4$hB%=
shell_HeapBlockInfo(a%!8)-4
hB%=a%!8
:GA%=_U%!76:GA%!0=256:GA%!&C=0:GA%!16=1:GA%!20=tB%!&C:GA%!24=tB%!16:GA%!28=tB%!0:GA%!32=tB%!4:GA%!36=hB%:GA%!40=a%!&C:$(GA%+44)=
shell_Leaf(
shell_IconGetData(b%,a%!16)):
&400E7,18,GA%,GA%!20,GA%!24:_U%!&78=_Q%!8:_U%!&88=hB%:_U%!&8C=a%!&C
G;_U%!&90=a%!8:_U%!&9C=a%!4:_U%!&C8=GA%!20:_U%!&CC=GA%!24
shell_HeapBlockReturn(tB%):
shell_DataSaveAck(_Q%):
_fullname$,PA%,kA%,a%,c%,k%:
shell_Tracef0("DataSaveAck:DataSaveAck message received"):PA%=0:kA%=_Q%?(44+PA%):
kA%<>0:_fullname$+=
(kA%):PA%+=1:kA%=_Q%?(44+PA%):
shell_Tracef0("DataSaveAck:Full save name is: "+_fullname$)
shell_Tracef0("DataSaveAck:task = &"+
_Q%!4):
shell_Tracef0("DataSaveAck:mytask = &"+
_U%!&94):d%=
shell_GetEventListOffset(_U%!28,_U%!32,_U%+72,24,
shell_Tracef0("DataSaveAck:offset% = "+
d%>=0
f%a%=(_U%!72)+d%:c%=a%!20:
$c%<>""
j!k%=
("FN"+$c%+"(_fullname$)")
shell_HeapBlockExists(a%!8)
8,&A,_fullname$,a%!&C,,a%!8,a%!8+
shell_HeapBlockInfo(a%!8)+1
shell_MessageNoArgs("SHELLMSG21")
_Q%!36>-1
_U%!80<>0
shell_HeapBlockReturn(_U%!80)
yH_U%!80=
shell_HeapBlockFetch(
_fullname$+1):c%=_U%!80:$c%=_fullname$
:_Q%!16=3:!_Q%=256:_Q%!20=_U%!&C8:_Q%!24=_U%!&CC:_Q%!40=_U%!&8C:_Q%!36=
shell_FileLength(_fullname$):_Q%!&C=_Q%!8:
shell_Tracef0("DataSaveAck:File length is "+
_Q%!36+" bytes"):$(_Q%+44)=_fullname$+
(0):_U%!84=_Q%!8
shell_Tracef0("DataSaveAck:Sending DataLoad Message"):
&400E7,18,_Q%,_Q%!20,_Q%!24:
_U%!28<>_U%!20
shell_CloseWindow(_U%!28)
&400D4,,-1
shell_PrintSave(_fullname$,_Q%!20,_Q%!24,_Q%!8,_Q%!40):
shell_Tracef0("DEBUG:: copies = "+
(_U%!336)):
_U%!336>0
+_U%!336-=1:
shell_DoSendPrintSave(&FFF)
shell_DataSaveCheckName(b%,f%):
d%,a%,q%:a%=_U%!72:d%=0:
a%<>0
shell_HeapBlockInfo(a%)-8:
!(a%+d%)=b%
shell_IconGetData(!a%,a%!16):
R$,".")=0
shell_OK(
shell_MessageNoArgs("SHELLMSG01"))
d%=q%
:d%+=24:
d%>=q%
shell_DataLoadAck(_Q%):
shell_Tracef0("DataLoadAck:DataLoadAck message received (file received ok)"):
shell_UserMessageAcknowledge(_Q%):
_Q%!16
shell_AckDataLoad(_Q%)
shell_AckRAMFetch(_Q%)
_Q%!8=_SHELL_SENDDATALOAD_MY_REF%
RO3_Present
("Filer_Run "+_SHELL_SENDDATALOAD_FILE$)
("Run "+_SHELL_SENDDATALOAD_FILE$)
shell_AckDataLoad(_Q%):
_Q%!&C<>_U%!84
&20008,6,"<Wimp$Scrap>":
&FF,"Data Transfer failed: Receiver died"
shell_AckRAMFetch(_Q%):
cF%,c%:c%=_U%!&9C:
shell_Tracef0("AckRAMFetch:AckRAMFetch called...."):
_Q%!&C<>_U%!&70
_U%!&80=0
shell_Tracef0("AckRAMFetch:Receiver does not support RAM transfer"):
&20023,"Wimp$Scrap",,-1,0,3
,,cF%:
cF%<>0
$(c%+44)="<Wimp$Scrap>"+
(0):c%!0=(49+
shell_GetString(c%+44)))
3:c%!&C=c%!8:c%!16=2:c%!36=-1:
&400E7,18,c%,c%!4:_U%!&6C=c%!8
shell_OK(
shell_MessageNoArgs("SHELLMSG14"))
shell_Tracef0("AckRAMFetch:RAM transfer started, but not enough data sent. Sender died?"):
shell_HeapBlockReturn(_U%!&98):_U%!&98=0:
shell_OK("SHELLMSG06")
shell_MenuWarning(_Q%):
A$,WB%,LA%,RA%,k%,_temp%,PA%,E$,uB%,a%:LA%=_Q%!24:RA%=_Q%!28:_U%!264=0:
_U%!20<>0
shell_Tracef0("MenuWarning:Removing last dynamic dbox (handle=&"+
~_U%!20+")"):k%=
shell_DeleteWindow(_U%!20):
shell_Tracef0("MenuWarning:Last dynamic dbox removed")
_Q%!20
_U%!&E4:
shell_WindowRetitle(_U%!&E4,
shell_MessageNoArgs("warning")):
shell_IconPutData(_U%!&E4,1,
shell_MessageNoArgs("SHELLMSG07"),0):
&400E8,,_U%!&E4,LA%,RA%
shell_MenuGetItemAddress(_U%!24,_Q%+32):
shell_HeapBlockExists(uB%!4)
shell_MenuWarnDBox(uB%,LA%,RA%)
shell_HeapBlockFetch(32):
&45BC4,_U%!24,_Q%+32
,,a%:
shell_FindMenuWarnEvent(a%!8,E$,J$):
shell_HeapBlockReturn(a%):
shell_MenuWarnSubMenu(_Q%!20,LA%,RA%,E$,J$)
shell_MenuWarnDBox(DB%,LA%,RA%):
c%,u%,k%:
c%=DB%!4:
shell_CreateWindow($c%!0,u%):
shell_Tracef0("MenuWarnDBox:Creating new dynamic dbox (handle=&"+
~u%+")"):
$c%!4<>""
shell_Tracef0("MenuWarnDBox:Calling preopen FN '"+$c%!4+"'"):k%=
("FN"+$c%!4+"("+
u%+")")
$c%!8<>""
shell_Tracef0("MenuWarnDBox:Calling postopen FN '"+$c%!8+"'"):k%=
("FN"+$c%!8+"("+
u%+")")
shell_Tracef0("MenuWarnDBox:Opening dbox.."):_U%!20=u%:
&400E8,,u%,LA%,RA%:
shell_FindMenuWarnEvent(dA%,
w%,z%,c%,d%,m%,q%,CA%,g%:
wB%:wB%=0:z%=_U%!&DC:d%=0:m%=
:E$="":wB%=0:
shell_HeapBlockExists(z%)
:g%+=4:
z%!g%=-1:q%=g%:g%=0:
shell_Tracef0("FindMenuWarnEvent:list_size%="+
:c%=!(z%+d%+0):
c%<>-1
c%=dA%
gum%=
:CA%=z%!(d%+4):E$=$CA%:wB%=z%!(d%+8):CA%=z%!(d%+&C):J$=$CA%:
shell_Tracef0("FindMenuWarnEvent:submenu found")
:d%+=16
d%=q%
d%>=q%
E$="":J$=""
wB%=0
shell_Tracef0("FindMenuWarnEvent:warn fn not found..")
shell_MenuWarnSubMenu(fD%,LA%,RA%,E$,J$):
k%,c%,RB%,g%:_shell_FontMenuSelFN$=J$:
shell_HeapBlockExists(_U%!&E0)
shell_HeapBlockReturn(_U%!&E0)
C_U%!&E0=
shell_HeapBlockFetch(
E$+1):c%=_U%!&E0:$c%=E$:
E$<>""
("FN"+E$+"(_U%!52,_U%!56)"):
shell_Tracef0("MenuWarnSubMenu:Calling FN"+E$)
fD%=_U%!&FC
shell_Tracef0("MenuWarnSubMenu:FontMenu opening.."):
shell_HeapBlockExists(_U%!256)
shell_HeapBlockReturn(_U%!256)
g%=0:
:g%+=4:
!(_Q%+32+g%)=-1:g%+=4:_U%!256=
shell_HeapBlockFetch(g%):c%=_U%!256:g%=0:
:c%!g%=!(_Q%+32+g%):g%+=4:
!(_Q%+32+g%)=-1:c%!g%=!(_Q%+32+g%):c%=_U%!256
shell_Tracef0("MenuWarnSubMenu:Selecting '"+
shell_FontMenuGetLastSelectedFont+"' in FontMenu.."):
"FontMenu_Select",
shell_FontMenuGetLastSelectedFont,_U%!260
,RB%:_U%!264=1:
RB%<>_U%!&FC
shell_FontMenuUpdatePtr(RB%):_U%!&FC=RB%:fD%=RB%
_U%!264=0
&400E8,,fD%,LA%,RA%:
shell_AttachSubMenu(UB%,wB%,E$):
&45BCE,UB%,wB%:
E$<>""
&45BCC,,
shell_EventListMenuWarn(UB%,wB%,E$,"")
shell_EventListMenuWarn(UB%,lF%,E$,J$):
c%,CA%,g%,z%:
_U%!&DC=0
_U%!&DC=
shell_HeapBlockFetch(32):c%=_U%!&DC:c%!0=UB%:c%!4=
shell_HeapBlockFetch(
E$+1):$(c%!4)=E$:c%!8=lF%:c%!&C=
shell_HeapBlockFetch(
J$+1):$(c%!&C)=J$:c%!16=-1:c%!20=-1:c%!24=-1:c%!28=-1
shell_HeapBlockExtend(_U%!&DC,32):_U%!&DC=z%:g%=0:
:g%+=16:
z%!g%=-1:c%=_U%!&DC:c%!g%=UB%:c%!(g%+4)=
shell_HeapBlockFetch(
E$+1):CA%=c%!(g%+4):$(CA%)=E$:c%!(g%+8)=lF%:c%!(g%+&C)=
shell_HeapBlockFetch(
J$+1):CA%=c%!(g%+&C):$(CA%)=J$
;c%!(g%+16)=-1:c%!(g%+20)=-1:c%!(g%+24)=-1:c%!(g%+28)=-1
shell_InteractiveHelp(_Q%):
G$,a$,K$,XB%,nD%,sA$,s%,l%:s%=
shell_HeapBlockFetch(&C):
&600D6,_Q%!32,s%,&3F0000,&C<<16
!s%<>-1
shell_IconGetData(_Q%!32,!s%)
shell_HeapBlockReturn(s%):
G$=""
shell_GetEventHandler(_Q%!32,_Q%!36,8)
shell_IconGetValidation(_Q%!32,_Q%!36):
K$<>""
shell_StringUpperCase(
K$,1))="I"
K$,";"):
XB%=0
K$,2)
K$,2,XB%-2)
shell_StringUpperCase(K$),
shell_StringUpperCase(";i")):nD%=
shell_StringUpperCase(K$),
shell_StringUpperCase(";"),XB%+1):
XB%>0
nD%>0
K$,XB%+2,nD%-XB%-2)
K$,XB%+2)
G$<>""
_Q%!16=&503:_Q%!&C=_Q%!8:a$=
shell_MessageLookup(G$,"",""):a$=
shell_MessageExpand(a$):$(_Q%+20)=a$:!_Q%=(
a$+25)
&400E7,17,_Q%,_Q%!4
shell_Message_PreQuit(_Q%):
c%,qD%,a%,y%,tD%:
_U%!300>0
shell_HeapBlockFetch(256):
_Q%!0
4:a%!y%=_Q%!y%:
shell_Tracef0("Message_PreQuit:PreQuit message received"):c%=_U%!300:qD%=a%!4:
!a%<24
tD%=0
tD%=a%!20
-2a%!&C=a%!8:
&400E7,19,a%,qD%:
("FN"+$c%)<>0
_closedown%=
!a%=24:a%!24=508:
&400E7,8,a%,qD%:_closedown%=
shell_HeapBlockReturn(a%)
lwaorigin(A,
RA%):LA%=A!0-A!16:RA%=A!&C-A!20:
shell_Iconbar(FA%,PA$,I$,yD%,n%,QC%,LC%,pC%):
I$=""
KK!_Q%=FA%:_Q%!4=0:_Q%!8=0:_Q%!&C=70:_Q%!16=70:_Q%!20=&301A:$(_Q%+24)=PA$
!_Q%=FA%:_Q%!4=0:_Q%!8=-16:_Q%!&C=yD%:_Q%!16=90:_Q%!20=&1700210B:
_Q%!24&C:
_Q%!28
(PA$)+2:$(_Q%!24)=I$:$(_Q%!28)="S"+PA$:_Q%!32=&C
&400C2,,_Q%
shell_AttachMenu(-2,h%,n%,QC%,LC%,pC%):=h%
shell_IconbarSetText(u%,kG%,L$):
j%,p%:j%=
shell_HeapBlockFetch(40):p%=
shell_HeapBlockFetch(36):p%!20=0:
shell_OSCheckVersion(3)
u%=-1
!p%=-2
!p%=u%
&400CB,,p%
:!j%=u%:j%!4=kG%:
&400CE,,j%:$(j%!28)=L$:
&400D1,-1,j%!8-&64-p%!20,j%!&C,j%!16+&64-p%!20,j%!20:
shell_HeapBlockReturn(j%):
shell_HeapBlockReturn(p%):
shell_WritableIconHandler(b%,f%,WA%):
oA%,OC%,PC%,g%:
TE%,aE%,sA%,BB%,OB%,zG%,t%:t%=
shell_HeapBlockFetch(&400):
&400D3,,t%:
!t%=-1
shell_HeapBlockReturn(t%):=
&400D6,b%,t%,&40E000,&E000:OC%=!t%:g%=0:
t%!g%=f%
TE%=t%!(g%-4):aE%=t%!(g%+4)
:g%+=4:
t%!g%=-1:PC%=t%!(g%-4):
shell_FakeMouseClick(b%,0,4)
398,394:
f%=PC%
&400D2,b%,OC%,-1,-1,-1,
shell_IconGetData(b%,OC%))
&400D2,b%,aE%,-1,-1,-1,
shell_IconGetData(b%,aE%))
399,410:
f%=OC%
&400D2,b%,PC%,-1,-1,-1,
shell_IconGetData(b%,PC%))
&400D2,b%,TE%,-1,-1,-1,
shell_IconGetData(b%,TE%))
&400D2,b%,OC%,-1,-1,-1,
shell_IconGetData(b%,OC%))
&400D2,b%,PC%,-1,-1,-1,
shell_IconGetData(b%,PC%))
shell_HeapBlockReturn(t%):=
shell_FakeMouseClick(b%,f%,kB%):
6,&F,1:_Q%!8=kB%:_Q%!&C=b%:_Q%!16=f%:
shell_Action(6):
shell_IconHasCaret(BA%,zB%):
t%,UA%,JA%:t%=
shell_HeapBlockFetch(24):
&400D3,,t%:JA%=t%!0:UA%=t%!4:
shell_HeapBlockReturn(t%):
(UA%=zB%
JA%=BA%)
shell_IconCreate(b%,KB%,rA%,yD%,u%,oD%,fE%,dG%,O$,DB%,_B%,K$):
YG%,h%,KC%,j%:j%=
shell_HeapBlockFetch(40):j%!0=b%:j%!4=KB%:j%!8=rA%:j%!&C=KB%+yD%:j%!16=rA%+u%:j%!20=dG%
fE%<<28
oD%<<24:
j%!20
#YG%=
O$,","):j%!24=DB%:
K$<>""
6KC%=
shell_HeapBlockFetch(
K$+1):$KC%=K$:j%!28=KC%
j%!28=-1
:j%!32=_B%
$(j%+24)=
O$,&B)
&400C2,,j%
shell_HeapBlockReturn(j%):=h%
shell_IconDelete(b%,f%):
shell_DoIconDelete(b%,f%,
shell_IconDelete2(b%,f%):
shell_DoIconDelete(b%,f%,
shell_DoIconDelete(b%,f%,EG%):
a%,QA%,TA%,cA%,lA%:a%=
shell_HeapBlockFetch(40):a%!0=b%:a%!4=f%:
&400CE,,a%:
&8168A,,a%+8:QA%=a%!8:TA%=a%!&C:cA%=a%!16:lA%=a%!20:
&400CE,,a%:
shell_HeapBlockExists(a%!28)
shell_HeapBlockReturn(a%!28)
shell_HeapBlockExists(a%!32)
shell_HeapBlockReturn(a%!32)
&400C4,,a%:
&400D1,b%,QA%,TA%,cA%,lA%
shell_HeapBlockReturn(a%):
shell_IconRadioSelection(BA%,iB%):
fF%,_C%,rF%,sF%:_C%=
shell_HeapBlockFetch(8):fF%=(iB%<<16)+(1<<21):sF%=(31<<16)+(1<<21):
&400D6,BA%,_C%,sF%,fF%:rF%=!_C%:
shell_HeapBlockReturn(_C%):=rF%
shell_IconPutData(JA%,UA%,O$,J):
a%,UA$:
_U%!&64
"WimpExt_SetIconString",,,JA%,UA%,O$+
shell_IconGetData(JA%,UA%):
O$<>UA$
(Sa%=
shell_HeapBlockFetch(40):a%!0=JA%:a%!4=UA%:
&400CE,,a%:
(a%!24
(1<<8))<>0
O$>a%!36
shell_MessageNoArgs("SHELLMSG12")
$(a%!28)=O$
$(a%+28)=
O$,&B)
a%!8=0:a%!&C=0:
&400CD,,a%
shell_HeapBlockReturn(a%)
shell_IconPutDataNow(JA%,UA%,O$):
a%:a%=
shell_HeapBlockFetch(50):a%!0=JA%:a%!4=UA%:
&400CE,,a%:
(a%!24
(1<<8))<>0
O$>a%!36
shell_MessageNoArgs("SHELLMSG12")
$(a%!28)=O$
$(a%+28)=
O$,&B)
:a%!8=0:a%!&C=0:
&400CD,,a%:
shell_EnsurePoll:
shell_HeapBlockReturn(a%):
shell_IconNewSprite(JA%,UA%,eA$,J):
j%:j%=
shell_HeapBlockFetch(40):j%!0=JA%:j%!4=UA%:
&400CE,,j%:
&400C4,,j%:j%!4=j%!8:j%!8=j%!&C:j%!&C=j%!16:j%!16=j%!20:j%!20=j%!24:$(j%+24)=eA$:
&400C2,,j%
&400D1,j%!0,j%!4,j%!8,j%!&C,j%!16
shell_HeapBlockReturn(j%):=UA%
shell_IconGetData(JA%,UA%):
M$,j%:
UA%<0
JA%<-2
_U%!&64
"WimpExt_GetIcon",,,JA%,UA%
,,,M$
shell_HeapBlockFetch(40):j%!0=JA%:j%!4=UA%:
&400CE,,j%:
(j%!24
(1<<8))<>0
M$=$(j%!28)
M$=$(j%+28)
shell_HeapBlockReturn(j%)
shell_IconMove2(b%,f%,lE%,pE%):
AA%:AA%=
shell_HeapBlockFetch(40):!AA%=b%:AA%!4=f%:
&400CE,,AA%:AA%!8+=lE%:AA%!16+=lE%:AA%!&C+=pE%:AA%!20+=pE%:f%=
shell_IconMove(b%,f%,AA%!8,AA%!&C,AA%!16,AA%!20):
shell_HeapBlockReturn(AA%):=f%
shell_IconResize(b%,f%,QA%,TA%,cA%,lA%):=
shell_IconMove(b%,f%,QA%,TA%,cA%,lA%)
shell_IconMove(b%,f%,QA%,TA%,cA%,lA%):
s%,EH%,JH%,LB%,a%:
IF%,JF%,MF%,QF%:s%=
shell_HeapBlockFetch(40):a%=
shell_HeapBlockFetch(40):!s%=b%:s%!4=f%:
&400CE,,s%:!a%=b%:a%!4=f%:
&400CE,,a%:
&8168A,,a%+8:IG%=s%!24:SE%=s%+28
IF%=IG%:JF%=SE%!0:MF%=SE%!4:QF%=SE%!8:LB%=s%!8-a%!8:
&400C4,,s%:
&400D1,!s%,s%!8-LB%,s%!&C-LB%,s%!16+LB%,s%!20+LB%:f%=
shell_CreateIcon2(b%,QA%,TA%,cA%,lA%,IF%,JF%,MF%,QF%,LB%):
shell_HeapBlockReturn(s%):
shell_HeapBlockReturn(a%):=f%
shell_CreateIcon2(h%,QA%,TA%,cA%,lA%,l%,PG%,SG%,TG%,LB%):
_%,OA%,I$,f$,KB%,rA%:OA%=
shell_HeapBlockFetch(60):!OA%=h%:OA%!20=l%:OA%!24=PG%:OA%!28=SG%:OA%!32=TG%:I$="":f$="":
256I$=$(OA%!24)
I$=$(OA%+24)
shell_IconGetCommand(OA%!28,"S")
f$=$(OA%+24)
shell_GetMinXY(l%,I$,f$):
cA%-QA%<KB%
cA%=QA%+KB%
lA%-TA%<rA%
lA%=TA%+rA%
OA%!4=QA%:OA%!8=TA%:OA%!&C=cA%:OA%!16=lA%:
&400C2,,OA%
&400D1,!OA%,OA%!4-LB%,OA%!8-LB%,OA%!&C+LB%,OA%!16+LB%:
&400D3,,OA%:
!OA%=h%:
OA%!4=_%:
&400D2,h%,_%,0,0,-1,0
shell_HeapBlockReturn(OA%):=_%
shell_GetMinXY(l%,I$,f$):
QA%,TA%,cA%,lA%,BB%,OB%:KB%=0:rA%=0:
I$<>""
&40084,l%>>24
,,TA%,,lA%:
&40097,,
(l%>>24)+I$
,QA%,,cA%:
&40088,,QA%
,QA%:
&40088,,cA%
,cA%:KB%=cA%-QA%:rA%=lA%-TA%
KB%=6*NH%+16*
I$:rA%=32
4rA%+=2*CH%
f$<>""
&2002E,296,
shell_UserSpritesBase,f$
,,,BB%,OB%,,yF%;P%:
&20035,yF%,4
,,yG%:BB%=BB%<<yG%:
&20035,yF%,5
,,JG%:OB%=OB%<<JG%:
&800 BB%=BB%/2:OB%=OB%/2
539)=19BB%=KB%+BB%
BB%>KB%KB%=BB%
OB%>rA%rA%=OB%
shell_IconGetCommand(BD%,iA$):
I%,M$:
BD%<=0
M$=""
shell_StringUpperCase($BD%),";"+
shell_StringUpperCase(iA$)):
M$=""
$(BD%+I%),
$(BD%+I%)+";",";")-1)
shell_IconRedraw(b%,f%):
a%:a%=
shell_HeapBlockFetch(40):!a%=b%:a%!4=f%:
&400CE,,a%:
&8168A,,a%+8:
&400D1,b%,a%!8,a%!&C,a%!16,a%!20:
shell_Action(
shell_Poll_I(0,_U%!&94)):
shell_HeapBlockReturn(a%):
shell_IconGetValidation(b%,f%):
a%,K$,l%:
f%=-1
UK$="":a%=
shell_HeapBlockFetch(40):a%!0=b%:a%!4=f%:
&400CE,,a%:l%=a%!24:
a%!32>0
K$=$(a%!32)
shell_HeapBlockReturn(a%):=K$
shell_IconPutValidation(b%,f%,x$):
a%,l%:a%=
shell_HeapBlockFetch(&64):a%!0=b%:a%!4=f%:
&400CE,,a%:l%=a%!24:
$(a%!32)=x$
shell_HeapBlockReturn(a%):
shell_IsIconSelected(ZB%,aB%):
shell_IconGetState(ZB%,aB%):l%=_Q%!24:c%=(l%
&200000):
shell_IconSelect(ZB%,aB%):
shell_IconSetState(ZB%,aB%,&200000,&200000):
shell_IconDeselect(ZB%,aB%):
shell_IconSetState(ZB%,aB%,0,&200000):
shell_IconGetState(ZB%,aB%):!_Q%=ZB%:_Q%!4=aB%:
&400CE,,_Q%:
shell_IconSetSelected(b%,f%,iA%):
iA%=0
shell_IconDeselect(b%,f%)
shell_IconSelect(b%,f%)
shell_IconSet(b%,f%,iA%):
iA%=0
shell_IconDeselect(b%,f%)
shell_IconSelect(b%,f%)
shell_IconSetState(ZB%,aB%,lG%,DG%):
j%:j%=
shell_HeapBlockFetch(16):!j%=ZB%:j%!4=aB%:j%!8=lG%:j%!&C=DG%:
&400CD,,j%:
shell_HeapBlockReturn(j%):
shell_IconUnselectable(h%,cC%):
shell_IconSetState(h%,cC%,&400000,&40000):
shell_IconSetBGColour(b%,f%,uA%):
uA%<0
uA%>&F
shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetBGColour")
shell_IconSetState(b%,f%,uA%<<28,&F0000000):
shell_IconSetFGColour(b%,f%,uA%):
uA%<0
uA%>&F
shell_MessageOneArg("SHELLMSG24","PROCshell_IconSetFGColour")
shell_IconSetState(b%,f%,uA%<<24,&F000000):
shell_CaretSetPosition(JA%,UA%,VG%,bG%,bA%,sA%):
&400D2,JA%,UA%,VG%,bG%,bA%,sA%:
shell_CaretReadPosition(
sA%):
t%:t%=
shell_HeapBlockFetch(24):
&400D3,,t%:JA%=t%!0:UA%=t%!4:dC%=t%!8:eC%=t%!&C:sA%=t%!20:
shell_HeapBlockReturn(t%):
shell_IconSetButtonType(b%,f%,fC%):
fC%=&C
fC%=&D
shell_MessageOneArg("SHELLMSG23","PROCshell_IconSetButtonType")
fC%<0
fC%>&F
shell_MessageOneArg("SHELLMSG22","PROCshell_IconSetButtonType")
shell_IconSetState(b%,f%,fC%<<&C,&F000):
shell_IconSetESG(b%,f%,iB%):
iB%<0
iB%>31
shell_MessageOneArg("SHELLMSG25","PROCshell_IconSetESG")
shell_IconSetState(b%,f%,iB%<<16,&1F0000):
shell_IconSetText(b%,f%,DA%):
DA%<>0
DA%=1<<0
shell_IconSetState(b%,f%,DA%,1<<0):
shell_IconSetSprite(BA%,zB%,DA%):
DA%<>0
DA%=1<<1
shell_IconSetState(BA%,zB%,DA%,1<<1):
shell_IconSetBorder(BA%,zB%,DA%):
DA%<>0
DA%=1<<2
shell_IconSetState(BA%,zB%,DA%,1<<2):
shell_IconSetHCentred(b%,f%,DA%):
shell_IconSetState(b%,f%,0,1<<9):
DA%<>0
DA%=1<<3
shell_IconSetState(b%,f%,DA%,1<<3):
shell_IconSetVCentred(b%,f%,DA%):
DA%<>0
DA%=1<<4
shell_IconSetState(b%,f%,DA%,1<<4):
shell_IconSetFilled(b%,f%,DA%):
DA%<>0
DA%=1<<5
shell_IconSetState(b%,f%,DA%,1<<5):
shell_IconSetRightJust(b%,f%,DA%):
shell_IconSetHCentred(b%,f%,0):
DA%<>0
DA%=1<<9
shell_IconSetState(b%,f%,DA%,1<<9):
shell_IconSetLeftJust(b%,f%):
shell_IconSetHCentred(b%,f%,0):
shell_IconSetRightJust(b%,f%,0):
shell_IconSetUnselectable(b%,f%,iA%):
iA%<>0
iA%=1<<22
shell_IconSetState(b%,f%,iA%,1<<22):
iA%<>0
shell_HeapBlockFetch(24):
&400D3,,t%:
!t%=b%
t%!4=f%
&400D2,-1
shell_HeapBlockReturn(t%)
shell_CaretSetRight(b%,f%):
&400D2,b%,f%,-1,-1,-1,
shell_IconGetData(b%,f%)):
print_text(K,L,I$):
in(K,L-32,K+16*
(I$),L)
in(A%,B%,C%,D%):
newvals:f=_Q%!28:i=_Q%!32:g=_Q%!36:h=_Q%!40:j=_Q%!4:k=_Q%!8:l=_Q%!&C:m=_Q%!16:O=_Q%!20:P=_Q%!24:p=l-j:q=m-k:AA=O:BA=O+p:CA=P:z=P-q:
max(PA%,kA%):
PA%<kA%
shell_Leaf(F$):
F$,"."):F$=
F$,".")+1):
shell_Branch(i$):
FA%,y$,c%:
i$,".")=0
\ y$=""
c%=0:
:FA%=c%+1:c%=
i$,".",FA%):
c%=0:y$=
i$,FA%-2)
gname(D):z$="":
?D<>0
?D<>&D:z$=z$+
?D:D+=1:
shell_WindowResize(JA%,tG%,pG%,mG%,qG%,DD%):!_Q%=tG%:_Q%!4=pG%:_Q%!8=mG%:_Q%!&C=qG%:
&400D7,JA%,_Q%:
v)_Q%!0=JA%:
&400CC,,_Q%:
&400C5,,_Q%
shell_WindowRetitle(
JA%,T$):
c%,r%,h%,yE%:r%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(JA%)*32)):r%!0=JA%:
&400CC,,r%:
((r%!60)
256)=0
Ac%=r%+76:$c%=
T$,&B):
&400C3,,r%:
&400C1,,r%+4
h%<>JA%
shell_UpdateWindowHandle(JA%,h%):JA%=h%
yE%=r%!84:$(!(r%+76))=
T$,yE%-1):
((r%!32)
(1<<16))<>0
&400D1,-1,r%!4,r%!16,r%!&C,r%!16+44
shell_HeapBlockReturn(r%)
shell_WindowTitleIndirected(vB%):
(1<<8))=(1<<8)
shell_ScreenToWindowCoords(zE%,
gD%,AF%,DH%,BF%,CF%,BC%:BC%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(zE%)*32)):gD%=BC%:!gD%=zE%:
&400CC,,gD%:AF%=BC%!4:RG%=BC%!16:BF%=BC%!20:CF%=BC%!24:X%=X%+(BF%-AF%):Y%=Y%+(CF%-RG%)
shell_HeapBlockReturn(BC%):
shell_WimpSlotReadEnd:
&400EC,-1,-1
SC%:=SC%
shell_WimpSlotClaimMemory(SC%,qA%):
&400EC,SC%+qA%,-1
iD%<SC%+qA%
shell_WimpSlotReleaseMemory:
&400EC,SC%,-1:
shell_MouseLimit(A,JA%):A!0=JA%:
&400CB,,A:
mouse_rectangle(A!4,A!8,A!&C-A!4,A!16-A!8):
shell_NameOfFirstSprite(qA$):
X%,N%,_$:X%=
(qA$):
#X%=4:N%=
#X%:N%+=
#X%*256:N%+=
#X%*65536:N%+=
#X%*&1000000:
#X%=N%:_$="":
&B:_$+=
#X%):
#X%:=_$
InitialiseSpriteArea(S%,eG%):!S%=eG%:S%!8=16:
46,9+256,S%:
shell_ListEvents(b%,_%):
n%,h$:
b%=-1
b%=-2
shell_Tracef0("MenuSelection="+
shell_GetEventHandler(b%,_%,0)):
shell_Tracef0("MenuMaker ="+
shell_GetEventHandler(b%,_%,1)):
shell_Tracef0("ClickSelect ="+
shell_GetEventHandler(b%,_%,2))
shell_Tracef0("ClickAdjust ="+
shell_GetEventHandler(b%,_%,3)):
shell_Tracef0("Redraw ="+
shell_GetEventHandler(b%,_%,4)):
shell_Tracef0("Keypress ="+
shell_GetEventHandler(b%,_%,5))
shell_Tracef0("Drag ="+
shell_GetEventHandler(b%,_%,6)):
shell_Tracef0("Menu Warning ="+
shell_GetEventHandler(b%,_%,7)):
shell_Tracef0("HelpTag ="+
shell_GetEventHandler(b%,_%,8)):n%=
shell_GetEventMenu(2,b%,_%):
h$="None"
shell_Tracef0("Menu handle =&"+h$):
shell_HeapManagerInit(F$,hG%):
_heap_code%900:
("LOAD "+F$+"heapcode "+
~_heap_code%):
_heap_code%+0,hG%:
shell_HeapBlockExtend(HF%,jD%):
_heap_code%+&C,HF%,jD%:=HF%
shell_HeapBlockFetch(jD%):
_heap_code%+4,DB%,jD%:=DB%
shell_HeapBlockReturn(
PA%):
shell_HeapBlockExists(PA%)
_heap_code%+8,PA%
PA%=0:
shell_HeapBlockExists(DB%):
DB%<&8000
99,"No heapblock defined at this address"
6&k%=
shell_HeapBlockInfo(DB%):
shell_HeapBlockInfo(PA%):
29,6,!(_heap_code%+28),PA%
,,,Q:=Q
shell_HeapBlockExtendMid(PA%,kA%,TF%):
UF%:UF%=
shell_HeapBlockInfo(PA%):
_heap_code%+&C,PA%,kA%:
&400F1,_U%!&94,PA%+TF%,_U%!&94,PA%+TF%+kA%,UF%-kA%:=PA%
shell_OSVarExists(VB%,AA$):
&20023,AA$,VB%,-1,0,0
shell_OSVarGetVal(VB%,qA%,AA$,u):
BA$,C,FG%:
&20023,AA$,VB%,qA%,0,-3*(u=
,,C,FG%,x%:
C-1:BA$=BA$+
(VB%?y%):
y%:=BA$
shell_OSReadCommandArg(v):
kD%,V$,d%:V$="":d%=0:
kD%?d%<>0:V$+=
(kD%?d%):d%+=1:
1:V$=
34)+1):V$=
34)+2)
shell_StringStripTrailing(B$,X$):
B$,1)=X$:B$=
(B$)-1):
shell_StringStripLeading(B$,X$):
B$,1)=X$:B$=
B$,2):
shell_StringStripAll(B$,X$):
E,F:E=
B$,X$):
B$,F-1)+
B$,F+1)
E:=B$
shell_StringPadTrailing(B$,X$,IB%):
(B$)<IB%:B$=B$+
(B$),X$):
shell_StringPadLeading(B$,X$,IB%):
(B$)<IB%:B$=
(B$),X$)+B$:
shell_StringUpperCase(B$):
(B$)>0
(B$):
B$,y%,1)>="a"
B$,y%,1)<="z"
B$,y%,1)=
B$,y%,1))
shell_StringExchange(B$,DA$,hA$):
B$,DA$)
0sA%=
B$,DA$):B$=
B$,sA%-1)+hA$+
B$,sA%+
shell_StringArrayGetLongest(A$(),ED%):
y%,FD%:FD%=0:
(A$(y%))>FD%
(A$(y%))
y%:=FD%
mem_to_string(WF%,d%,NG%):
WF%?d%<>NG%:B$+=
(WF%?d%):d%+=1:
shell_FileLength(W$):
x%,CD%,ID%,IB%,TC%,B$:
8,5,W$
x%,,CD%,ID%,IB%,TC%:=IB%
shell_TraceOn:_U%!&64=_U%!&64
1<<9:
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOn"):
shell_TraceOff:
(_U%!&64
(1<<9))
_U%!&64=_U%!&64
(1<<9)
shell_BroadcastMessage(&43B00,"ShellDBug:TraceOff"):
shell_TraceInit(o$):
YA%,a%,D$,C$:
o$<>""
(o$):_U%!44=YA%
shell_HeapBlockFetch(256):C$=
shell_OSVarGetVal(a%,256,"Obey$Dir",1):D$=
shell_Leaf(C$),2):
shell_BroadcastMessage(&43B00,"ShellDBug:Init Debug messages from "+D$):
shell_HeapBlockReturn(a%):
_U%!&64
_U%!&64=(_U%!&64
1<<4)
shell_TraceIsOn:
_U%!&64
(1<<9)
shell_Tracef0(VA$):
shell_TraceIsOn)
_U%!44<>-1
YA%=_U%!44:
#YA%,VA$
_U%!&94>0
shell_BroadcastMessage(&43B00,"ShellDBug:Trace "+VA$)
shell_Tracef2(DB%):
("MEDIT "+
~DB%):
shell_TraceExit:
_U%!44<>-1
#(_U%!44):_U%!44=-1
shell_AttachHotKey(XA$,QC%,LC%,pC%,d$,b%,Y$,Z$):
z%,d%,c%,CA%,WA%,mD%:mD%=
_U%!60=0
W3_U%!60=
shell_HeapBlockFetch(24):d%=0:_U%!&B4=1
d%=_U%!&B4*24:_U%!60=
shell_HeapBlockExtend(_U%!60,24):_U%!&B4=(_U%!&B4)+1
:z%=_U%!60:
"F1":WA%=385
"F2":WA%=386
"F3":WA%=387
"F4":WA%=388
"F5":WA%=389
"F6":WA%=390
"F7":WA%=391
"F8":WA%=392
"F9":WA%=393
"F10":WA%=458
"F11":WA%=459
WA%=(
XA$)-64:mD%=
WA%+=16
WA%+=32
:c%=z%+d%:c%!0=WA%:c%?4=QC%:c%?5=LC%:c%?6=pC%:c%!8=
shell_HeapBlockFetch(
d$+1):CA%=c%!8:$CA%=d$:
shell_IsWindowStatic(b%)=
shell_MessageNoArgs("SHELLMSG09")
:c%!&C=b%:c%!16=
shell_HeapBlockFetch(
Y$+1):CA%=c%!16:$CA%=Y$:c%!20=
shell_HeapBlockFetch(
Z$+1):CA%=c%!20:$CA%=Z$:
shell_HotKeyProcess(WA%):
z%,q%,m%,e%,u%,p$,Y$,Z$:
LC%,QC%,pC%,mA%,pA%,vB%,OH%,d%:
w%,r%:z%=_U%!60:q%=_U%!&B4*24:m%=
:e%=0:
z%!e%=WA%
e%+=24
e%>=q%:
dc%=z%+e%:p$=$(c%!8):
shell_Tracef0("HotKeyProcess:Template name is '"+p$+"'"):
(p$<>""
c%!&C=0)
shell_CreateWindow(p$,u%):
shell_Tracef0("HotKeyProcess:Creating new dynamic window (handle is &"+
~u%+")"):r%=
shell_HeapBlockFetch(36):r%!0=u%:
&400CB,,r%:mA%=(r%!4-r%!&C)/2:pA%=(r%!16-r%!8)/2:
shell_HeapBlockReturn(r%)
:Y$=$(c%!16):
Y$<>""
shell_Tracef0("HotKeyProcess:Calling Pre-Open FN '"+Y$+"'"):
c%!&C>0
("FN"+Y$+"("+
c%!&C+")")
("FN"+Y$+"("+
u%+")")
shell_Tracef0("HotKeyProcess:No Pre-Open FN registered")
shell_IsWindowStatic(c%!&C)
shell_OpenWindowStatic(c%!&C)
c%!&C>0
shell_MessageNoArgs("SHELLMSG09")
shell_OpenWindowDynamic2(u%,mA%,pA%)
:Z$=$(c%!20):
Z$<>""
shell_Tracef0("HotKeyProcess:Calling Post-Open FN '"+Z$+"'"):
c%!&C>0
("FN"+Z$+"("+
c%!&C+")")
("FN"+Z$+"("+
u%+")")
shell_Tracef0("HotKeyProcess:No Post-Open FN registered")
p$="":Y$="":Z$="":w%=
shell_WindowCentreOnPointer(u%):
p%,hC%,mA%,pA%:hC%=
shell_HeapBlockFetch(20):
&400CF,,hC%:r%=
shell_HeapBlockFetch(36):r%!0=u%:
&400CB,,r%:mA%=(r%!4-r%!&C)/2:pA%=(r%!16-r%!8)/2:
shell_WindowMoveTo(u%,hC%!0+mA%,hC%!4-pA%)
shell_HeapBlockReturn(r%):
shell_HeapBlockReturn(hC%):
shell_WindowCentreOnScreen(u%):
p%,GD%,HD%,AB%,bA%,bC%,EC%:
&20035,-1,4
,,bC%:
&20035,-1,5
,,EC%:
&20035,-1,&B
,,GD%:
&20035,-1,&C
,,HD%:GD%=GD%<<bC%:HD%=HD%<<EC%:r%=
shell_HeapBlockFetch(36):r%!0=u%:
&400CB,,r%:AB%=(r%!&C-r%!4)
ebA%=(r%!16-r%!8):
shell_WindowMoveTo(u%,(GD%/2)-(AB%/2),(HD%-bA%)/2):
shell_HeapBlockReturn(r%):
shell_OpenWindowStaticNewView(b%):
shell_OpenWindow(b%,
,-1):
shell_OpenWindowStatic(h%):
shell_IsWindowStatic(h%)=
shell_OpenWindow(h%,0,-1)
shell_InitHelpSystem(F$,cG%):
GA$,FA%,wA%,c$,pD%,jB%:_U%!&D4=0:
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
@_U%!&D8=0:
shell_ScanForHelp:
GA$=" -DieWithTask"
GA$=""
_U%!&64
F$="":wA%=
shell_HeapBlockFetch(256):c$=
shell_OSVarGetVal(wA%,256,
shell_GetAppName+"Res$Path",-1):
shell_HeapBlockReturn(wA%):
:FA%=
c$,","):
FA%>0
shell_FileExists(
c$,FA%-1)+
shell_GetAppName)
!GF$=
c$,FA%-1)+
shell_GetAppName:
shell_StrongHlpChkFiles(F$)
c$,FA%+1)
shell_FileExists(c$+
shell_GetAppName)
(?F$=c$+
shell_GetAppName:
shell_StrongHlpChkFiles(F$)
shell_OK(
shell_MessageOneArg("SHELLMSG26",
shell_GetAppName))
F$<>""
shell_FileExists(F$)
shell_StrongHlpChkFiles(F$)
shell_MessageOneArg("SHELLMSG33",F$)
jB%=0
shell_StrongHlpMsg("Help_Install "+F$+GA$):_U%!&64=_U%!&64
shell_HelpWord(HA$):
IH%,c%,EA%:EA%=
shell_HeapBlockFetch(512):
_U%!&D0=-1
shell_OSVarExists(EA%,"StrongHelp$Dir")
&600DE,"<StrongHelp$Dir>":
_U%!&D8<>0
shell_HeapBlockReturn(_U%!&D8)
K<_U%!&D8=
shell_HeapBlockFetch(
HA$+1):c%=_U%!&D8:$c%=HA$
shell_HeapBlockReturn(EA%):
shell_OK(
shell_MessageNoArgs("SHELLMSG11"))
shell_StrongHlpMsg("Help_Word "+HA$)
shell_HeapBlockReturn(EA%):
shell_StrongHlpMsg(t$):
shell_BroadcastMessage(&43B00,t$):
shell_ScanForHelp:
bB%,JD%:bB%=
shell_HeapBlockFetch(256):
:bB%!&C=0:
&400E7,19,bB%,-2,_U%!&D4
,,JD%:_U%!&D4=_U%!&D4+1:
JD%<>-1
(_U%!&D4)>64:
JD%<>-1
w@bB%!0=24:bB%!&C=0:bB%!16=&400C6:bB%!20=JD%:
&400E7,17,bB%,0
shell_HeapBlockReturn(bB%):
shell_BroadcastMessage(oG%,t$):
AA%,sD%:sD%=(
t$+30)
3:AA%=
shell_HeapBlockFetch(sD%):AA%!&C=0:AA%!16=oG%:$(AA%+20)=t$+
(0):AA%!0=sD%:
&600E7,17,AA%,0:
shell_HeapBlockReturn(AA%):
shell_WindowToggleBackIcon(
shell_WindowToggleFlags(b%,1<<24):
shell_WindowToggleCloseIcon(
shell_WindowToggleFlags(b%,1<<25):
shell_WindowToggleTitleBar(
shell_WindowToggleFlags(b%,1<<26):
shell_WindowToggleToggleIcon(
shell_WindowToggleFlags(b%,1<<27):
shell_WindowToggleHScrollBar(
shell_WindowToggleFlags(b%,1<<30):
shell_WindowToggleAdjustSizeIcon(
shell_WindowToggleFlags(b%,1<<29):
shell_WindowToggleVScrollBar(
shell_WindowToggleFlags(b%,1<<28):
shell_WindowToggleFlags(
b%,qB%):
a%,l%,DD%,h%:
shell_Tracef0("WindowToggleFlags:wh%=&"+
~b%):DD%=
shell_WindowIsOpen(b%):a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):a%!0=b%:
&400CC,,a%:l%=a%!32:l%=(l%
qB%):a%!32=l%:
&400C3,,a%
&400C1,,a%+4
h%:!a%=h%:
&400C5,,a%
shell_HeapBlockReturn(a%):
h%<>b%
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_ListClickSelect:
z%,e%,q%,c%,CA%:z%=_U%!&C:q%=
shell_HeapBlockInfo(z%):
shell_Tracef0(" "):
shell_Tracef0("List of ClickSelect events:"):
shell_Tracef0(" "):
shell_Tracef0("Window Icon FN")
shell_Tracef0("-----------------------------------------------------------"):e%=0:
:c%=z%!(e%+20):CA%=z%+e%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0(
shell_StringPadTrailing(
shell_GetWindowIdentifier(CA%!0),".",&C)+" "+
shell_StringPadLeading(
CA%!4," ",6)+" "+$c%)
:e%+=48:
(e%>=q%):
shell_Tracef0(" "):
shell_ListClickAdjust:
z%,e%,q%,c%,CA%:z%=_U%!&C:q%=
shell_HeapBlockInfo(z%):
shell_Tracef0(" "):
shell_Tracef0("List of ClickAdjust events:"):
shell_Tracef0(" "):
shell_Tracef0("Window Icon FN")
shell_Tracef0("-----------------------------------------------------------"):e%=0:
:c%=z%!(e%+24):CA%=z%+e%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0(
shell_StringPadTrailing(
shell_GetWindowIdentifier(CA%!0),".",&C)+" "+
shell_StringPadLeading(
CA%!4," ",6)+" "+$c%)
:e%+=48:
(e%>=q%):
shell_Tracef0(" "):
shell_ListHelpTags:
z%,e%,q%,c%,CA%:z%=_U%!&C:q%=
shell_HeapBlockInfo(z%):
shell_Tracef0(" "):
shell_Tracef0("List of attached help tags:"):
shell_Tracef0(" "):
shell_Tracef0("Window Icon Tag")
shell_Tracef0("-----------------------------------------------------------"):e%=0:
:c%=z%!(e%+44):CA%=z%+e%:
shell_HeapBlockExists(c%)
$c%<>""
shell_Tracef0(
shell_StringPadTrailing(
shell_GetWindowIdentifier(CA%!0),".",&C)+" "+
shell_StringPadLeading(
CA%!4," ",6)+" "+$c%)
:e%+=48:
(e%>=q%):
shell_Tracef0(" "):
shell_MemFill(jC%,_F%,nE%):
I%,KD%,uD%:KD%=_F%
4:uD%=_F%
KD%>0
(KD%*4)
4:jC%!(I%-1)=nE%:
uD%>0
>.jC%=jC%+(KD%*4):
uD%-1:jC%?I%=nE%:
shell_AttachFontMenu(b%,f%,J$,WA$):
shell_FontMenuInit:
"FontMenu_Select",""+
0,_U%!260
,n%:_U%!&FC=n%:
shell_EventAdd(b%,f%,0,-2,J$):
shell_Tracef0("AttachFontMenu:Attaching font menu"):
WA$<>""
shell_AttachMenuMaker(b%,f%,WA$)
shell_AttachFontSubMenu(UB%,E$,J$):
FH%,n%,c%,g%:
shell_FontMenuInit:
"FontMenu_Select",""+
0,_U%!260
&45BCE,UB%,n%:
&45BCC,,
:_U%!&FC=n%:
shell_EventListMenuWarn(UB%,n%,E$,J$):
shell_Tracef0("AttachFontSubMenu:Attaching font menu &"+
~n%):
shell_FontMenuInit:
("RMEnsure FontMenu 1.16 RMLoad <EvntShell$Path>FontMenu"):
("RMEnsure FontMenu 1.16 Error Couldn't load FontMenu module"):
_U%!&F0=-1
"FontMenu_Create"
_U%!&F0
shell_FontMenuSelectFont("",
shell_FontMenuSelectFont(u$,vD%):
c%,RB%:
shell_HeapBlockExists(_U%!&F4)
shell_HeapBlockReturn(_U%!&F4)
|H_U%!&F4=
shell_HeapBlockFetch(
u$+1):c%=_U%!&F4:$c%=u$:
vD%<>0
vD%=1
B_U%!260=vD%:
"FontMenu_Select",u$,_U%!260
,RB%:
RB%<>_U%!&FC
shell_FontMenuUpdatePtr(RB%):_U%!&FC=RB%
shell_Tracef0("FontMenuSelectFont:Font is '"+u$+"'"):
shell_FontMenuGetLastSelectedFont:
shell_HeapBlockExists(_U%!&F4)
c%=_U%!&F4:=$c%
shell_FontMenuUpdatePtr(e%):
z%,g%:
shell_Tracef0("FontMenuUpdatePtr:Started.."):
shell_HeapBlockExists(_U%!&DC)
shell_Tracef0("FontMenuUpdatePtr:HeapBlock found.."):z%=_U%!&DC:g%=0:
shell_Tracef0("FontMenuUpdatePtr:Substituting ptr.."):z%!(g%+8)=e%:g%+=&C:
z%!g%=-1
shell_MenuUpdateHandle(mE%,oE%):
q%,e%,i%,n%:q%=
shell_HeapBlockInfo(_U%!&C)-8:e%=0:m%=
:i%=_U%!&C:
:n%=i%!(e%+8):
n%=mE%
i%!(e%+8)=oE%
+e%+=48:
(e%>=q%):
_U%!24=mE%
_U%!24=oE%
shell_FindFont(
e$,LD%,MD%,
wD%):
shell_FontIsAvailable(e$,LD%,MD%)
e$="Trinity.Medium"
&40081,,e$,LD%*16,MD%*16,0,0
shell_FontIsAvailable(e$,LD%,MD%):
&40081,0,e$,LD%*16,MD%*16,0,0
&40082,wD%:=
shell_CheckSelection(MG%):
c%,g%:c%=_U%!256:
_U%!24=_U%!&FC
MG%!g%<>c%!g%
g%+=4:
c%!g%=-1:=g%
shell_MenuGetItemAddress(n%,rE%):
g%,uB%:
&45BC7,n%
:uB%=n%+28+((rE%!g%)*24):n%=uB%!4:g%+=4:
rE%!g%=-1:=uB%
shell_GetLastMouseXPos:=_U%!272
shell_GetLastMouseYPos:=_U%!276
shell_UpdateWindowHandle(VA%,MA%):
shell_Tracef0("UpdateWindowHandle:Updating stored window handles"):
shell_Tracef0("UpdateWindowHandle:old handle=&"+
~VA%):
shell_Tracef0("UpdateWindowHandle:new handle=&"+
~MA%):
MA%<>VA%
_U%!28=VA%
_U%!28=MA%
!_Q%=VA%
!_Q%=MA%
shell_FixEventBlock(VA%,MA%,_U%!&C,48):
shell_FixEventBlock(VA%,MA%,_U%!96,16):
shell_FixEventBlock(VA%,MA%,_U%!72,24):
shell_FixEventBlock(VA%,MA%,_U%!92,24):
shell_FixEventBlock2(VA%,MA%,_U%!&68,16):
shell_FixEventBlock2(VA%,MA%,_U%!332,32)
shell_UpdateStaticWindowHandle(VA%,MA%):
shell_UpdateWindowHandleList(VA%,MA%)
shell_FixEventBlock(VA%,MA%,i%,d%):
e%,q%:
shell_HeapBlockExists(i%)
shell_HeapBlockInfo(i%)-8:
(i%!e%=VA%)
i%!e%=MA%
:e%+=d%:
(e%>=q%)
shell_FixEventBlock2(VA%,MA%,i%,d%):
e%,q%:e%=4:
shell_HeapBlockExists(i%)
q%=!i%:
(i%!e%=VA%)
i%!e%=MA%
:e%+=d%:
(e%>=q%)
shell_IconSelectAll(b%):
a%,I%:a%=
shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=1<<21:a%!&C=1<<21:
&400D6,!a%,I%,5<<21,0<<21:
!I%>-1:a%!4=!I%:
&400CD,,a%:I%+=4:
shell_HeapBlockReturn(a%):
shell_IconDeselectAll(b%):
a%,I%:a%=
shell_HeapBlockFetch(&7D0):I%=a%+64:!a%=b%:a%!8=0:a%!&C=1<<21:
&400D6,!a%,I%,5<<21,1<<21:
!I%>-1:a%!4=!I%:
&400CD,,a%:I%+=4:
shell_HeapBlockReturn(a%):
shell_Message_SaveDesktop(Q%):
JA$:JA$="Run "+
shell_GetAppDir+
&C,2,Q%!20,JA$,
shell_MessagesInit(H$,
sE%):
qA%,l%:
3,"Cannot open message file '"+H$+"'"
&41500,,H$
l%,,qA%:
sE%=0
shell_HeapBlockFetch(qA%)
30,6,,,17+
,,OD%:$(OD%+16)=H$:
&41501,OD%,OD%+16:
shell_Tracef0("MessagesInit:Message resource file '"+H$+"' loaded"):
shell_PrinterOnLine:
tE%,uE%:tE%=
(-4):
2,1,0,1,0,1,0:
>30:uE%=
(-4)<tE%):*FX21,3
3:=uE%
shell_AttachBumpHandler(b%,f%,vE%,wE%,QG%,UG%,xE%,iG%,KA$,LA$):
o%,d%,c%,CA%,vA%:d%=
shell_GetEventListOffset2(b%,vE%,_U%+&68,16,
):o%=_U%!&68+d%:o%!0=b%:o%!4=vE%:o%!8=xE%:o%!&C=
shell_HeapBlockFetch(24):vA%=o%!&C:vA%!0=f%:vA%!4=QG%:vA%!8=UG%
KA$>0
>vA%!&C=
shell_HeapBlockFetch((
KA$)+1):CA%=vA%!&C:$CA%=KA$
vA%!&C=0
LA$>0
>vA%!16=
shell_HeapBlockFetch((
LA$)+1):CA%=vA%!16:$CA%=LA$
vA%!16=0
iG%=-1
vA%!20=1
vA%!20=0
shell_GetEventListOffset2(b%,wE%,_U%+&68,16,
):o%=_U%!&68+d%:o%!0=b%:o%!4=wE%:o%!8=xE%*(-1):o%!&C=vA%:
shell_HandleBumpIcons(d%,b%,f%,_button%):
HH%,SA%,o%,lC%,_temp$,zD%:
cB%,_D%,AE%:
BH%,DC%:
_button%<>2
Yo%=_U%!&68+d%:_U%!288=b%:_U%!292=f%:_U%!296=d%:cB%=o%!8:_D%=
(-1):AE%=
(-2):
cB%=cB%*8
cB%=cB%*2
cB%=cB%*4
:SA%=o%!&C:zD%=SA%!16:
zD%<>0
C_temp$=
shell_IconGetData(b%,SA%!0):lC%=
("FN"+$zD%+"(_temp$)")
shell_IconGetData(b%,SA%!0))
_button%=1
_new_val%=lC%+((cB%)*(-1))
_new_val%=lC%+cB%
SA%!20=0
_new_val%>SA%!8
_new_val%=SA%!8
_new_val%<SA%!4
_new_val%=SA%!4
_new_val%>SA%!8
_new_val%=SA%!4
_new_val%<SA%!4
_new_val%=SA%!8
:DC%=SA%!&C:
DC%<>0
1_new_val$=
("FN"+$DC%+"(_new_val%,_button%)")
_new_val$=
_new_val%
_new_val%<>lC%
shell_IconPutData(b%,SA%!0,_new_val$,-1)
shell_WindowSetSpriteArea(u%,BE%):
a%,MA%,cC%,CE%:a%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(u%)*32)):!a%=u%:
&400CC,,a%:a%!68=BE%:
shell_IconSetSpriteArea(a%!60,a%+76,BE%):
(a%!88)>0
cC%=0
(a%!88)-1:CE%=a%+92+cC%*32:
shell_IconSetSpriteArea(CE%!16,CE%+20,BE%):
&400C3,,a%:
&400C1,,a%+4
MA%<>u%
shell_UpdateWindowHandle(u%,MA%):u%=MA%
shell_HeapBlockReturn(a%):=u%
shell_IconSetSpriteArea(l%,nC%,uG%):
3)=2)
256)<>0)
nC%!4=uG%
shell_StrongHlpIsAvailable:
SB%,EA%:SB%=
_U%!&64
kEA%=
shell_HeapBlockFetch(256):SB%=
shell_OSVarExists(EA%,"StrongHelp$Dir"):
shell_HeapBlockReturn(EA%)
:=SB%
shell_MenuNew(T$):
shell_Tracef0("MenuNew:Creating new menu (title is '"+T$+"')"):
&45BC1,,T$
h%:=h%
shell_MenuAdd(h%,MA$,J$):
shell_Tracef0("MenuAdd:Adding item ("+MA$+")"):
J$<>""
&45BC2,h%,MA$,J$
&45BC2,h%,MA$
:=dA%
shell_MenuTick(dA%,iA%):
&45BC9,dA%,iA%:
shell_MenuTickOnly1(XA%,FA%):
&45BD1,XA%,FA%:
shell_MenuTickOnly2(dA%):
&45BD1,dA%:
shell_MenuShade(h%,iA%):
&45BCB,h%,iA%:
shell_MenuDotted(dA%,iA%):
&45BCA,dA%,iA%:
shell_MenuColours(dA%,oD%,fE%):
&45BD0,dA%,oD%,fE%:
shell_MenuWritable(dA%,iA%,qA%,x$):
&45BCD,dA%,iA%,qA%,x$:
shell_MenuPutData(dA%,O$):
&45BC8,dA%,O$:
shell_MenuCallHandler(u%,_h_blk%):
("FN"+$u%+"(_h_blk%)")
shell_AttachOpenWindow(b%,A$):
a%,c%,d%:
shell_Tracef0("AttachOpenWindow:Attaching OpenWindow Handler"):
shell_MessageOneArg("SHELLMSG27","AttachOpenWindow")
shell_GetEventListOffset(b%,-1,_U%+304,&C,
):a%=_U%!304+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(
(A$)+1):c%=a%!8:$c%=A$:
shell_AttachCloseWindowHandler(b%,A$):
a%,c%,d%:
shell_Tracef0("AttachCloseWindowHandler:Attaching CloseWindow Handler"):
shell_MessageOneArg("SHELLMSG27","AttachCloseWindow")
shell_GetEventListOffset(b%,-1,_U%+308,&C,
):a%=_U%!308+d%:a%!0=b%:a%!4=-1:a%!8=
shell_HeapBlockFetch(
(A$)+1):c%=a%!8:$c%=A$:
shell_SpriteRename(XC%,kA$,oA$):
46,512+26,XC%,
shell_SpriteGetPtr(XC%,kA$),oA$:
shell_SpriteAreaSave(XC%,H$):
46,512+&C,XC%,H$:
shell_EnsurePoll:
:DA%=
shell_Poll_I(0,_U%!&94):
shell_Action(DA%):
DA%=0:
shell_WimpGetVersion:=_U%!316
shell_OSCheckVersion(KG%):=
shell_OSModuleCheckVersion("UtilityModule",KG%)
shell_OSModuleCheckVersion(pA$,y):
a%,_B%,M$:a%=
shell_HeapBlockFetch(256):
("Set Module$Check Y"):
("RMEnsure "+pA$+" "+
y+" Set Module$Check N"):
35,"Module$Check",a%,256,0,0
,,_B%:a%?_B%=&D:
("Unset Module$Check"):M$=$a%
shell_HeapBlockReturn(a%):
M$="N"
shell_MessageSendDataLoad(x%,R$):
AA%:AA%=
shell_HeapBlockFetch(256):AA%!0=256:AA%!4=0:AA%!&C=0:AA%!16=5:AA%!20=0:AA%!28=0:AA%!32=0:AA%!36=0:AA%!40=x%:$(AA%+44)=R$+
&400E7,18,AA%,0:_SHELL_SENDDATALOAD_MY_REF%=AA%!8:_SHELL_SENDDATALOAD_FILE$=R$
shell_HeapBlockReturn(AA%):
shell_MenuMakeFromFile(T$,jA$,o$):
h%,X%,B$,k%:
shell_FileExists(o$)
shell_MenuNew(T$):X%=
(o$):
#X%:k%=
shell_MenuAdd(h%,B$,jA$):
shell_BinarySearch(_search_term$,dA$,k$,LG%,DE%):
_pos%,CB%,_wp$,PD%,LH%,EE%,FE%,FF%,m%,GE%:DE%+=1:GE%=
:CB%=DE%:PD%=0:_pos%=CB%
2:FE%=LG%-1:EE%=DE%:
:_wp$=
("FN"+dA$+"(_pos%)"):HE%=_pos%:
_search_term$=_wp$
("FN"+k$+"(_search_term$,_wp$)")
+EE%=_pos%:CB%=_pos%-FE%:_pos%=CB%
2+PD%
FE%=_pos%:PD%=_pos%:CB%=EE%-_pos%:_pos%=CB%
2+PD%
FF%=HE%
!FF%=HE%:
shell_IconLastClicked:=_U%!32
shell_MenuGetNrItems(XA%):
n%,w%,GF%:
&45BC7,XA%
n%:n%+=28:
:w%=(n%?0
&80):GF%+=1:n%+=24:
w%:=GF%
shell_MenuGetNrDotted(XA%):
n%,w%,ED%:
&45BC7,XA%
n%:n%+=28:
:w%=(n%?0
&80):
(n%?0
ED%+=1
n%+=24:
w%=-1:=ED%
shell_MenuGetItemHandler(XA%,oC%):
eA%,e%,NA$:eA%=
shell_HeapBlockFetch(8):eA%!0=oC%:eA%!4=-1:
&45BC4,XA%,eA%
NA$=""
NA$=$(e%)
shell_HeapBlockReturn(eA%):=NA$
shell_MenuGetItemText(XA%,oC%):
eA%,e%,I$:eA%=
shell_HeapBlockFetch(8):eA%!0=oC%:eA%!4=-1:
&45BC4,XA%,eA%
,,e%:I$=$(e%!&C):
shell_HeapBlockReturn(eA%):=I$
shell_MenuGetItemHandle(XA%,oC%):
eA%,e%,h%:eA%=
shell_HeapBlockFetch(8):eA%!0=oC%:eA%!4=-1:
&45BC4,XA%,eA%
,,e%:h%=e%!8:
shell_HeapBlockReturn(eA%):=h%
shell_MenuGetItemHeight(XA%):
&45BC7,XA%
n%:=n%!20
shell_MenuCalculateHeight(XA%):
bA%:bA%=
shell_MenuGetNrItems(XA%)*
shell_MenuGetItemHeight(XA%):=bA%+(
shell_MenuGetNrDotted(XA%)*24)
shell_MenuSortItems(n%,gA$,fG%,jC%,KE%):
LE%:LE%=
shell_MenuGetNrItems(n%)-1:_shell_MS_handle%=n%:
KE%>LE%
KE%=LE%
&406C0:
shell_QuickSort(gA$,"_shell_MS_swap",fG%,0,KE%):
&406C1:
shell_QuickSort(k$,q$,_asc%,_start%,_end%):
_lo%,_h%,_F%,_temp%,k%:_lo%=_start%:_hi%=_end%:_F%=
:_temp%=_lo%-1+
(_hi%+1-_lo%):k%=
("FN"+q$+"(_lo%,_temp%)"):
_asc%=0
("FN"+k$+"(_lo%,_hi%)")
("FN"+q$+"(_lo%,_hi%)"):_F%=
("FN"+k$+"(_hi%,_lo%)")
("FN"+q$+"(_hi%,_lo%)"):_F%=
_hi%=_hi%-1
_lo%=_lo%+1
_lo%=_hi%:
_start%<_lo%-1
shell_QuickSort(k$,q$,_asc%,_start%,_lo%-1)
_hi%+1<_end%
shell_QuickSort(k$,q$,_asc%,_hi%+1,_end%)
_shell_MS_swap(QD%,RD%):
r$,s$,KF%,LF%:r$=
shell_MenuGetItemText(_shell_MS_handle%,QD%):s$=
shell_MenuGetItemText(_shell_MS_handle%,RD%):KF%=
shell_MenuGetItemHandle(_shell_MS_handle%,QD%):LF%=
shell_MenuGetItemHandle(_shell_MS_handle%,RD%)
shell_MenuPutData(KF%,s$):
shell_MenuPutData(LF%,r$):=0
_shell_MS_comp(QD%,RD%):
r$,s$:r$=
shell_MenuGetItemText(_shell_MS_handle%,QD%):s$=
shell_MenuGetItemText(_shell_MS_handle%,RD%):
shell_WindowSetTitleRightJust(
p%,aA%,h%,lB%:lB%=
shell_WindowIsOpen(b%):p%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!p%=b%:
&400CC,,p%:aA%=p%!60:
(1<<3))
shell_Tracef0("WindowSetTitleRightJust:title flags = &"+
~aA%):
shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit set.."):
shell_Tracef0("WindowSetTitleRightJust:Unsetting horizontally centred bit.."):aA%=aA%
(1<<3)
shell_Tracef0("WindowSetTitleRightJust:title flags = &"+
~aA%)
shell_Tracef0("WindowSetTitleRightJust:Horizontally centred bit NOT set..")
shell_Tracef0("WindowSetTitleRightJust:Setting right justified bit.."):aA%=aA%
(1<<9):p%!60=aA%:
&400C3,,p%:
&400C1,,p%+4
b%<>h%
shell_Tracef0("WindowSetTitleRightJust:Updating window handle..."):
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_OpenWindow(h%,0,0)
shell_HeapBlockReturn(p%):
shell_WindowSetTitleCentreJust(
p%,aA%,h%,lB%:lB%=
shell_WindowIsOpen(b%):p%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(b%)*32)):!p%=b%:
&400CC,,p%:aA%=p%!60:
shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+
~aA%)
shell_Tracef0("WindowSetTitleCentreJust:t_flags% AND (1 << 3) = "+
~(aA%
(1<<3))):
(1<<3))=0
shell_Tracef0("WindowSetTitleCentreJust:Horizontally centred bit not set.."):
shell_Tracef0("WindowSetTitleCentreJust:Setting horizontally centred bit.."):aA%=aA%
(1<<3):
shell_Tracef0("WindowSetTitleCentreJust:title flags = &"+
~aA%):p%!60=aA%
&400C3,,p%:
&400C1,,p%+4
b%<>h%
shell_Tracef0("WindowSetTitleCentreJust:Updating window handle..."):
shell_UpdateWindowHandle(b%,h%):b%=h%
shell_OpenWindow(h%,0,0)
shell_HeapBlockReturn(p%):
shell_IconGetSelectedIcons(b%,iB%,
NF%:NF%=(iB%<<16)+(1<<21):
&400D6,b%,s%,NF%,(iB%<<16)+(1<<21):
shell_GetLastMouseButton:=_U%!320
shell_GetLastWindowClicked:=_U%!28
shell_GetLastIconClicked:=_U%!32
shell_IconIndirSize(EB%,l%,nC%,X%):
qA%,PF%,g%,TD%:
&800100)=256
"qA%=nC%!8:
(nC%!4<>-1)
APF%=nC%!4:
#X%=EB%+PF%:g%=0:
:TD%=
#X%:g%+=1:
TD%<32:qA%+=+g%
qA%=0
:=qA%
shell_StrongHlpChkFiles(F$):
shell_FileExists(F$+".HelpData")
0<jB%=-1:
shell_MessageOneArg("SHELLMSG32","HelpData")
shell_FileExists(F$+".Index")
59jB%=-1:
shell_MessageOneArg("SHELLMSG32","Index")
shell_CaretMoveCaret(b%,DA%):
t%,RF%,g%,e%,mB%:g%=0:e%=0:t%=
shell_HeapBlockFetch(&800):
&400D3,,t%:
t%!4<>-1
E<RF%=t%!4:
&400D6,b%,t%,&40E000,&E000:
t%!g%=RF%
e%=g%
g%+=4:
t%!g%=-1:
0:mB%=!t%
1:mB%=t%!(g%-4)
t%!(e%+4)<>-1
mB%=t%!(e%+4)
mB%=!t%
mB%=t%!(e%-4)
mB%=t%!(g%-4)
&400D2,b%,mB%,-1,-1,-1,
shell_IconGetData(b%,mB%))
shell_HeapBlockReturn(t%):
shell_CaretPutFirstIcon(b%):
t%:t%=
shell_HeapBlockFetch(&800):
&400D6,b%,t%,&40E000,&E000:
!t%<>-1
shell_CaretSetRight(b%,!t%)
shell_HeapBlockReturn(t%):
shell_CaretPutLastIcon(b%):
shell_CaretMoveCaret(b%,1):
shell_CaretPutNextIcon(b%):
shell_CaretMoveCaret(b%,2):
shell_CaretPutPrevIcon(b%):
shell_CaretMoveCaret(b%,3):
shell_TemplateFileInfo(H$,
VC%:VC%=
RO3_Present:
shell_TemplateFileInfo3(H$,xA%,HA%,w%)
shell_TemplateFileInfo2(H$,xA%,HA%,w%)
shell_TemplateFileInfo2(H$,
FA%,FC%,dB%:
EA%,X%,PE%,CG%:
g%,TD%,QE%,oA%,qC%,l%:FA%=0:HA%=0:FC%=0:dB%=0:w%=0:
shell_FileExists(H$)
w%=-1
shell_FileType(H$)<>&FEC
w%=-2
UEA%=
shell_HeapBlockFetch(&D):X%=
(H$):
#X%=16:
&C,4,X%,EA%,4:EB%=!EA%:
EB%>0
HA%+=1:RE%=0:
&C,4,X%,EA%,4:PE%=!EA%:
&C,4,X%,EA%,4:CG%=!EA%:
&C,4,X%,EA%,&C:QE%=
#X%=EB%+56:
&C,4,X%,EA%,4:l%=!EA%:
#X%=EB%+72:
&C,4,X%,EA%,&C:RE%+=
shell_IconIndirSize(EB%,l%,EA%,X%):
#X%=EB%+84:
&C,4,X%,EA%,4:oA%=!EA%:
oA%>0
qC%=0
oA%-1:
#X%=EB%+88+(qC%*32)+16:
&C,4,X%,EA%,4:l%=!EA%:
#X%=EB%+88+(qC%*32)+20:
&C,4,X%,EA%,&C:RE%+=
shell_IconIndirSize(EB%,l%,EA%,X%):
#X%=QE%:FC%+=RE%:
PE%>dB%
dB%=PE%
EB%=0:
shell_HeapBlockReturn(EA%):xA%=dB%+FC%
shell_TemplateFileInfo3(H$,
FA%,FC%,dB%,EB%:
g%,TD%,QE%,oA%,qC%,l%:FA%=0:HA%=0:FC%=0:dB%=0:EA%=
shell_HeapBlockFetch(&D):
&400D9,,H$:
:$EA%="*":
&400DB,,-1,,,,EA%,FA%
,xA%,GG%,,,,FA%:
FA%<>0
xA%>dB%
dB%=xA%
FC%+=GG%:HA%+=1
FA%=0:
&400DA:xA%=dB%+FC%:
shell_HeapBlockReturn(EA%):
RO3_Present:
a%,_B%,M$:a%=
shell_HeapBlockFetch(256):
("Set RO3$Check Y"):
("RMEnsure UtilityModule 3.00 Set RO3$Check N"):
35,"RO3$Check",a%,256,0,0
,,_B%:a%?_B%=&D:
("Unset RO3$Check"):M$=$a%:
shell_HeapBlockReturn(a%):
M$="N"
shell_WindowCountIcons(b%):
eB%,VC%,oA%:
(_U%!&64
1<<&A)
shell_Tracef0("WindowCountIcons:RISC OS 3 detected.."):
b%=-1
b%=-2
yeB%=
shell_HeapBlockFetch(88):!eB%=b%:
&400CC,,eB%+1:oA%=eB%!88:
shell_Tracef0("WindowCountIcons:nr_icons% = "+
shell_Tracef0("WindowCountIcons:RISC OS 3 NOT found.."):eB%=
shell_HeapBlockFetch(6000):
$$!eB%=b%:
&400CC,,eB%:oA%=eB%!88
shell_Tracef0("WindowCountIcons:nr_icons% = "+
shell_HeapBlockReturn(eB%):=oA%
shell_SliderGetValue(h%):=(_U%!332+h%)!28
shell_HandleSlider(b%,f%,tA%):
KA%,LA%,RA%,a%,o%:
shell_Tracef0("HandleSlider:slider drag event found.."):o%=_U%!332+tA%:KA%=
shell_HeapBlockFetch(50):KA%!0=b%:KA%!4=o%!8:
&400CE,,KA%:a%=_U%!328:a%!0=0:a%!4=KA%!16-KA%!8:a%!8=f%:a%!&C=o%!&C:a%!16=o%
a%!24=o%!24:KA%!0=b%:
&400CB,,KA%:LA%=KA%!4-KA%!20:RA%=KA%!16-KA%!24:KA%!4=f%:
&400CE,,KA%:KA%!4=7:KA%!8+=LA%:KA%!&C+=RA%:KA%!16+=LA%:KA%!20+=RA%:KA%!24=KA%!8:KA%!28=KA%!&C:KA%!32=KA%!24+a%!4:KA%!36=KA%!20:
&400D0,,KA%:
shell_HeapBlockReturn(KA%)
_U%!&64=_U%!&64
1<<&B:
shell_Slider:
FB%,a%,VD%,rC%,b%,LA%,ZA$,MB%,_value%,k%:FB%=
shell_HeapBlockFetch(20):MB%=_U%!328:
&400CF,,FB%:b%=FB%!&C:rC%=MB%!8:VD%=!FB%:
VD%<>!MB%
shell_HeapBlockFetch(50):!a%=b%:
&400CB,,a%:LA%=VD%-a%!4:a%!4=rC%:
&400CE,,a%:
&400C4,,a%:a%!4=b%:a%!16=LA%:
&400C2,,a%+4:
&400D1,b%,a%!8,a%!&C,a%!8+MB%!4,a%!20:_value%=
(((LA%-a%!8)*&64)/MB%!4):c%=MB%!16:c%!28=_value%:
MB%!24<>-1
|$k%=
("FN"+$(MB%!24)+"(_value%)")
MB%!&C>=0
7ZA$=
(_value%):
shell_IconPutData(b%,MB%!&C,ZA$,-1)
:!MB%=VD%:
shell_HeapBlockReturn(a%)
shell_HeapBlockReturn(FB%):
shell_GetEventListOffset2(b%,f%,i%,GB%,aC%):
q%,e%,m%,d%,JB%,c%:
(!i%=0
(!i%=0)
E!i%=
shell_HeapBlockFetch(GB%+4):c%=!i%:c%!0=GB%:c%!4=0:c%!8=0:=4
:c%=!i%:q%=!c%:
shell_Tracef0("GetEventListOffset2:list size is "+
q%):e%=4:m%=
:d%=-1:JB%=-1:c%=!i%:
shell_Tracef0("GetEventListOffset2:window handle=&"+
~c%!e%):
JB%<0
(c%!e%=0
c%!e%+4=0)
JB%=e%
(c%!e%=b%)
f%=-1
d%=e%:m%=
c%!(e%+4)=f%
d%=e%:m%=
e%+=GB%
e%+=GB%
((e%>=(q%+4))
(d%=-1
JB%<0
Ud%=q%+4:!i%=
shell_HeapBlockExtend(!i%,GB%):c%=!i%:c%!0+=GB%:c%+=d%:c%!4=0:c%!8=0
d%=JB%
shell_SliderSetValue(h%,_value%):
o%,rC%,a%,YF%,UE%,VE%,WD%:
ZF%,aF%:o%=_U%!332+h%:rC%=o%!4:b%=o%!0:YF%=o%!8:VE%=o%!&C:a%=
shell_HeapBlockFetch(50):a%!0=b%:a%!4=YF%:
&400CE,,a%:UE%=a%!16:WD%=a%!8:ZF%=a%!&C:aF%=a%!20:a%!4=rC%:
&400CE,,a%
&400C4,,a%:a%!4=b%:
_value%>&64
_value%=&64
_value%<=0
_value%=0:a%!16=a%!8
a%!16=WD%+(UE%*(_value%/&64))-(WD%*(_value%/&64))
:o%!28=_value%:
&400C2,,a%+4:
&400D1,b%,WD%,ZF%,UE%,aF%:
o%!24<>-1
("FN"+$(o%!24)+"(_value%)")
VE%>=0
shell_IconPutData(b%,VE%,
_value%,
shell_HeapBlockReturn(a%):
shell_AttachSliderHandler(b%,bF%,WC%,GC%,XD%,WE%,Q$):
o%,d%:d%=
shell_GetEventListOffset2(b%,WC%,_U%+332,32,
):o%=_U%!332+d%:o%!0=b%:o%!4=WC%:o%!8=bF%:o%!&C=GC%:o%!16=XD%:o%!20=WE%:
Q$<>""
$2o%!24=
shell_HeapBlockFetch(
Q$+1):$(o%!24)=Q$
o%!24=-1
:o%!28=0:
_U%!328=0
_U%!328=
shell_HeapBlockFetch(24)
shell_AttachClickSelect(b%,WC%,"_shell_icondrag"):
shell_AttachClickSelect(b%,bF%,"_shell_icondrag2"):
XD%>=0
shell_AttachClickSelect(b%,XD%,"_shell_sliderbumpupS"):
shell_AttachClickSelect(b%,WE%,"_shell_sliderbumpdownS"):
shell_AttachClickAdjust(b%,XD%,"_shell_sliderbumpdownA"):
shell_AttachClickAdjust(b%,WE%,"_shell_sliderbumpupA")
_shell_icondrag(b%,f%):
shell_IconDragBox(b%,f%):=0
_shell_icondrag2(b%,f%):
NB%,o%,fA%,m%,WC%:o%=_U%!332:NB%=!o%:fA%=4:
shell_Tracef0("Event block size is "+
NB%):
o%!(fA%+8)=f%
:WC%=o%!(fA%+4)
:fA%+=32:
fA%>=NB%
shell_IconDragBox(b%,WC%):=0
_shell_sliderbumpupS(b%,f%):
k%:k%=
_shell_sliderbumpup(b%,f%,4):=0
_shell_sliderbumpupA(b%,f%):
k%:k%=
_shell_sliderbumpup(b%,f%,1):=0
_shell_sliderbumpdownS(b%,f%):
k%:k%=
_shell_sliderbumpdown(b%,f%,4):=0
_shell_sliderbumpdownA(b%,f%):
k%:k%=
_shell_sliderbumpdown(b%,f%,1):=0
_shell_sliderbumpup(b%,f%,kB%):
NB%,o%,fA%,m%,e%,_value%,HC%:
shell_Tracef0("In sliderbumpup routine"):o%=_U%!332:NB%=!o%:fA%=4:
shell_Tracef0("Event block size is "+
NB%):
kB%=4
HC%=16
HC%=20
o%!(fA%+HC%)=f%
:e%=fA%:_value%=o%!(e%+28):
shell_Tracef0("Current slider value = "+
_value%):
shell_Tracef0("Slider handle is = "+
:fA%+=32:
fA%>=NB%
shell_SliderSetValue(e%,_value%+1)
_shell_sliderbumpdown(b%,f%,kB%):
NB%,o%,fA%,m%,e%,_value%,HC%:
shell_Tracef0("In sliderbumpdown routine"):o%=_U%!332:NB%=!o%:fA%=4:
shell_Tracef0("Event block size is "+
NB%):
kB%=4
HC%=20
HC%=16
o%!(fA%+HC%)=f%
:e%=fA%:_value%=o%!(e%+28):
shell_Tracef0("Current slider value = "+
_value%):
shell_Tracef0("Slider handle is = "+
:fA%+=32:
fA%>=NB%
shell_SliderSetValue(e%,_value%-1)
shell_DeleteEventSlider(b%,f%):
d%,a%,q%,i%,c%,eF%:i%=_U%!332:
shell_GetEventListOffset2(b%,f%,_U%+332,32,
shell_Tracef0("DeleteEventSlider:offset% = "+
d%>=0
f%=-1
shell_Tracef0("DeleteEventSlider:Deleting Slider Event (all events for window handle &"+
~b%+")")
shell_Tracef0("DeleteEventSlider:Deleting Slider Event (window handle was &"+
~b%+" icon handle was "+
f%+")")
:q%=!i%:
d%=q%-32
shell_HeapBlockReturn(i%+d%+24):
shell_HeapBlockReturn(_U%!332):_U%!332=0:
shell_Tracef0("DeleteEventSlider:No Slider events now registered")
_U%!332=
shell_HeapBlockExtend(_U%!332,-32):i%=_U%!332:!i%-=32
a%=i%+d%:a%!0=0:a%!4=0:eF%=a%+24:
shell_HeapBlockReturn(eF%)
d%<0:
shell_OpenWindowDynamic(lA$,QA$,RA$):
u%,mA%,pA%,r%:
shell_CreateWindow(lA$,u%):
shell_Tracef0("OpenWindowDynamic:Creating new dynamic window (handle is &"+
~u%+")"):r%=
shell_HeapBlockFetch(36):r%!0=u%:
&400CB,,r%:mA%=(r%!4-r%!&C)/2
=pA%=(r%!16-r%!8)/2:
shell_HeapBlockReturn(r%):
_U%!20<>0
&400D4,,-1:k%=
shell_DeleteWindow(_U%!20)
:_U%!20=b%:
QA$<>""
shell_Tracef0("OpenWindowDynamic:Calling Pre-Open FN '"+QA$+"'"):k%=
("FN"+QA$+"("+
u%+")")
shell_Tracef0("OpenWindowDynamic:No Pre-Open FN")
shell_OpenWindowDynamic2(u%,mA%,pA%):
RA$<>""
shell_Tracef0("OpenWindowDynamic:Calling Post-Open FN '"+RA$+"'"):k%=
("FN"+RA$+"("+
u%+")")
shell_Tracef0("OpenWindowDynamic:No Post-Open FN")
shell_InteractiveHelpOn:
(_U%!&64
1<<&C)<>0
_U%!&64=_U%!&64
1<<&C
shell_InteractiveHelpOff:
(_U%!&64
1<<&C)<>0
_U%!&64=_U%!&64
1<<&C
shell_MessageSendPrintSave(YE%,gF%):
gF%>1
_U%!336=gF%-1
_U%!336=0
shell_DoSendPrintSave(YE%):
shell_DoSendPrintSave(YE%):
GA%:GA%=
shell_HeapBlockFetch(256):GA%!0=256:GA%!&C=0:GA%!16=&80142:GA%!20=0:GA%!24=0:GA%!28=0:GA%!32=0:GA%!36=256:GA%!40=YE%:$(GA%+44)="PrintOut"+
shell_Tracef0("MessageSendPrintSave:Sending PrintSave message..")
&400E7,18,GA%,GA%!20,GA%!24:
shell_HeapBlockReturn(GA%):
shell_HandlePrintFile(_Q%):
shell_Tracef0("HandlePrintFile:Message_PrintFile received"):
shell_HandlePrintError(_Q%):
shell_Tracef0("HandlePrintError:Message_PrintError received"):
shell_HandlePrintTypeOdd(_Q%):
shell_Tracef0("HandlePrintTypeOdd:Message_PrintTypeOdd received"):
shell_HandleSetPrinter(_Q%):
shell_Tracef0("HandleSetPrinter:Message_SetPrinter received"):
shell_PrinterDriverLoaded:
"XPDriver_Info"
;nB%:
shell_PrinterDriverGetName:
nB%,hF%:
"XPDriver_Info"
,,,,hF%;nB%:
shell_GetString(hF%)
shell_IconGetBGColour(b%,f%):
uA%,j%:j%=
shell_HeapBlockFetch(40):j%!0=b%:j%!4=f%:
&400CE,,j%:uA%=(j%!24>>28)
shell_HeapBlockReturn(j%):=uA%
shell_IconGetFGColour(b%,f%):
uA%,j%:j%=
shell_HeapBlockFetch(40):j%!0=b%:j%!4=f%:
&400CE,,j%:uA%=(j%!24>>24)
shell_HeapBlockReturn(j%):=uA%
shell_AttachPopupMenu(b%,oB%,GC%,n%,Q$):
shell_DoAttachPopupHandler(b%,oB%,GC%,n%,Q$,0):
shell_AttachColourPopupMenu(b%,oB%,GC%,n%,Q$):
shell_DoAttachPopupHandler(b%,oB%,GC%,n%,Q$,1):
shell_DoAttachPopupHandler(b%,oB%,GC%,n%,Q$,vB%):
o%,d%:d%=
shell_GetEventListOffset2(b%,oB%,_U%+340,24,
):o%=_U%!340+d%:o%!0=b%:o%!4=oB%:o%!8=GC%:
Q$<>""
2o%!&C=
shell_HeapBlockFetch(
Q$+1):$(o%!&C)=Q$
o%!&C=-1
:o%!16=vB%:o%!20=n%:
oB%>=0
shell_IconSetButtonType(b%,oB%,3)
shell_DoPopupSelect(_Q%,d%):
o%,Q$,_item_text$,w%,sC%:
BA%,bE%,cE%:o%=_U%!340+d%:BA%=!o%:sC%=o%!8:dE%=o%!&C:bE%=o%!16:XA%=o%!20:cE%=!_Q%:_item_text$=
shell_MenuGetItemText(XA%,cE%):w%=0:
dE%<>-1
=Q$=$(dE%):w%=
("FN"+Q$+"("+
BA%+","+
sC%+",_item_text$)")
w%<>0
dE%=-1
sC%>=0
_POPUP_TYPE_TEXT:
shell_IconPutData(BA%,sC%,_item_text$,
_POPUP_TYPE_WIMPCOLOUR:
shell_IconSetBGColour(BA%,sC%,cE%)
99,"Unknown Popup type in DoPopupSelect (type was "+
bE%+")"
shell_3DEnabled:
jF%,_3d%:
_U%!&64
(1<<&A)
6,&A1,&8C
,,jF%:
_3d%=
_3d%=
_3d%=
:=_3d%
shell_MenuDelete(h%,gG%):
e%,q%,i%:
h%<>0
&65BC3,h%,gG%:q%=
shell_HeapBlockInfo(_U%!&C)-8:i%=_U%!&C:
(i%!(e%+8)=h%)
i%!(e%+8)=0
e%+=48
(e%>=q%)
shell_HandleAttachedDataSave(_Q%,b%,f%):
tA%,a%,CC%,_name$,c%,k%:
shell_DataSaveCheckName(b%,f%):tA%=
shell_GetEventListOffset(b%,-1,_U%+72,24,
tA%>=0
6ia%=_U%!72+tA%:CC%=a%!16:_name$=
shell_IconGetData(b%,CC%):c%=a%!20:
$c%<>""
("FN"+$c%+"(_name$)")
shell_WindowMoveToPopUpPos(BA%,zB%,kF%):
JC%,yA%,mF%,nF%,oF%,pF%:
qF%:JC%=
shell_HeapBlockFetch(40):JC%!0=BA%:JC%!4=zB%:
&400CE,,JC%:mF%=JC%!16:nF%=JC%!20:yA%=
shell_HeapBlockFetch(40):yA%!0=BA%:
&400CB,,yA%:oF%=yA%!4:pF%=yA%!16:yA%!0=kF%
&400CB,,yA%:qF%=yA%!16-yA%!8:
shell_WindowMoveTo(kF%,oF%+mF%,pF%+nF%-(qF%/2)):
shell_HeapBlockReturn(JC%):
shell_HeapBlockReturn(yA%):
shell_WindowScrollTo(BA%,dC%,eC%):
ZA%:ZA%=
shell_HeapBlockFetch(36):!ZA%=BA%:
&400CB,,ZA%:ZA%!20=dC%:ZA%!24=eC%:
shell_WindowIsOpen(BA%)
&400C5,,ZA%
&400C5,,ZA%:
&400C6,,ZA%
shell_HeapBlockReturn(ZA%):
shell_WindowScrollBy(BA%,dC%,eC%):
ZA%:ZA%=
shell_HeapBlockFetch(36):!ZA%=BA%:
&400CB,,ZA%:ZA%!20+=dC%:ZA%!24+=eC%:
shell_WindowIsOpen(BA%)
&400C5,,ZA%
&400C5,,ZA%:
&400C6,,ZA%
shell_HeapBlockReturn(ZA%):
shell_WindowSetBackgroundColour(
u%,gE%):
p%,h%,tF%,HB%,oA%:oA%=
shell_WindowCountIcons(u%):tF%=
shell_WindowIsOpen(u%):p%=
shell_HeapBlockFetch(&64+(oA%*32)):p%!0=u%:
&400CC,,p%:p%?39=gE%:_shell_open_behind%=p%!28:HB%=p%!28:
&400C3,,p%
&400C1,,p%+4
h%:p%!0=h%:
&400CC,,p%:
u%<>h%
shell_UpdateWindowHandle(u%,h%):u%=h%
shell_OpenWindow(h%,0,HB%)
shell_HeapBlockReturn(p%):
shell_WindowSetForegroundColour(
u%,gE%):
p%,h%,lB%,HB%:lB%=
shell_WindowIsOpen(b%):p%=
shell_HeapBlockFetch(&64+(
shell_WindowCountIcons(u%)*32)):p%!0=u%:
&400CC,,p%:p%?38=gE%:_shell_open_behind%=p%!28:HB%=p%!28:
&400C3,,p%:
&400C1,,p%+4
u%<>h%
shell_Tracef0("WindowSetForegroundColour:Updating window handle..."):
shell_UpdateWindowHandle(u%,h%):u%=h%
shell_OpenWindow(h%,0,HB%)
shell_HeapBlockReturn(p%):
shell_InstallLib(U$):
aD%:aD%=
(U$):
aD%=0
#aD%:
1,"Unable to install "+U$
#aD%:
U$:U$=
U$,&A):
U$,"."):U$=
U$,".")+1):
("FN_shell_"+U$+"Init")
shell_TemplatesInit(l$,
nG%):
tC%,hE%,uF%,xA%:
vF%,FA%,bD%,R$,HA%,nB%,w%:
wF%,uC%:bD%=
shell_HeapBlockFetch(&C):FA%=0:HA%=0:vF%=
shell_FileLength(l$):rG%=
shell_HeapBlockFetch(vF%):tC%=rG%:
shell_TemplateFileInfo(l$,xA%,HA%,w%):
shell_HeapBlockFetch(4+(20*HA%)):_U%!4=vC%:zF%=
shell_HeapBlockFetch(xA%):hE%=zF%:uF%=zF%+xA%:HA%=0:uC%=4:
&600D9,,l$
;nB%:
shell_MessageTwoArgs("SHELLMSG34","template",l$)
:$bD%="*":
&400DB,,tC%,hE%,uF%,_U%!&E8,bD%,FA%
,,hE%,,,R$,FA%:
FA%<>0
vC%!uC%=tC%:$(vC%+uC%+4)=R$:vC%!(uC%+16)=-1:uC%+=20:
shell_Tracef0("TemplatesInit: Template Loaded: "+R$):wF%=(tC%!84)*32:tC%+=(88+wF%):HA%+=1
FA%=0:
&400DA:_U%!0=HA%
shell_MessageTwoArgs("SHELLMSG35","template",l$)
shell_MessageTwoArgs("SHELLMSG36",l$,"template")
shell_HeapBlockReturn(bD%):nG%=0:!vC%=HA%:
shell_WindowLoaded(N$):
d%,jE%:d%=
shell_GetWindowListOffset(N$):
d%>=0
shell_GetWindowListOffset(N$):
d%,HA%,zA%,g%:
(N$)>&B
shell_MessageOneArg("SHELLMSG02",N$)
NiHA%=
shell_GetNrTemplatesLoaded:zA%=
shell_WindowListGetAddr+4:g%=0:d%=-1:
$(((zA%)+(20*g%))+4)=N$
d%=g%*20
:g%+=1:
d%<>-1
g%>(HA%-1):=d%
shell_GetWB(N$):
d%,yA%,zA%:d%=
shell_GetWindowListOffset(N$):zA%=
shell_WindowListGetAddr+4:
d%>=0
yA%=zA%!d%
shell_MessageOneArg("SHELLMSG03",N$)
:=yA%
shell_GetWindowHandleList(N$):
d%,jA%,zA%:d%=
shell_GetWindowListOffset(N$):zA%=
shell_WindowListGetAddr+4:
d%>=0
jA%=!(zA%+d%+16)
shell_MessageOneArg("SHELLMSG03",N$)
:=jA%
shell_CreateWindowStatic(N$,
BA%):
IC%:IC%=
shell_GetWB(N$):IC%!64=_U%!16:
&400C1,,IC%
shell_StaticWindowListAddHandle(BA%):
shell_WindowListAddHandle(BA%):
shell_WindowListAddHandle(BA%):
BG%,IA%,e%:
zA%:BG%=
shell_GetWindowListOffset(N$)+16:IA%=
shell_WindowListGetAddr+4+BG%:
!IA%=-1
:!IA%=
shell_HeapBlockFetch(8):e%=!IA%:e%!0=BA%:e%!4=-1
shell_Tracef0("DEBUG::Extending window handle list for window '"+N$+"'"):
shell_Tracef0("DEBUG::Window handle is &"+
BA%):!IA%=
shell_HeapBlockExtend(!IA%,4):zA%=!IA%:e%=0:
zA%!e%<>-1:e%+=4:
:zA%!(e%+0)=BA%:zA%!(e%+4)=-1
shell_GetWindowIdentifier(h%):
IA%,HA%,e%,g%,m$:HA%=
shell_GetNrTemplatesLoaded:IA%=
shell_WindowListGetAddr+4:m$="":
-1,-2:m$="iconbar"
IA%!16<>-1
7jA%=IA%!16:e%=0:
jA%!e%<>-1:
jA%!e%=h%
m$=$(IA%+4)
e%+=4:
:g%+=1:IA%+=20:
m$<>""
g%=HA%
m$=""
shell_MessageOneArg("SHELLMSG38",
shell_RemoveHandleFromWindowList(h%):
IA%,HA%,I%,e%:HA%=
shell_GetNrTemplatesLoaded:IA%=
shell_WindowListGetAddr+4:
IA%!16<>-1
4jA%=IA%!16:e%=0:
jA%!e%<>-1:
jA%!e%=h%
jA%!e%=0
e%+=4:
:IA%+=20:
shell_UpdateWindowHandleList(VA%,MA%):
IA%,HA%,I%,e%:HA%=
shell_GetNrTemplatesLoaded:IA%=
shell_WindowListGetAddr+4:
IA%!16<>-1
7jA%=IA%!16:e%=0:
jA%!e%<>-1:
jA%!e%=VA%
jA%!e%=MA%
e%+=4:
:IA%+=20:
shell_GetNrTemplatesLoaded:
IA%:IA%=
shell_WindowListGetAddr:=!IA%
shell_WindowListGetAddr:=_U%!4
shell_WindowListPrint:
IA%,HA%,I%,e%:HA%=
shell_GetNrTemplatesLoaded:
shell_TraceOn:IA%=
shell_WindowListGetAddr+4:
shell_Tracef0(""):
shell_Tracef0("Current Window List ("+
(HA%)+" templates)")
shell_Tracef0("-----------------------------------------"):
shell_Tracef0($(IA%+4)+":"):
IA%!16=-1
shell_Tracef0("No windows defined for this identifier")
jA%=IA%!16:e%=0:
jA%!e%<>-1:
shell_Tracef0(" window handle &"+
~(jA%!e%)):e%+=4:
:IA%+=20:
shell_Tracef0(""):
shell_TraceOff:
_shell_StaticList_Init:gA%=0:=0
shell_StaticWindowListAddHandle(h%):
d%,g%,c%:
gA%=0
shell_Tracef0("StaticWindowListAddHandle:Creating new list"):
shell_Tracef0("StaticWindowListAddHandle:Window handle is &"+
~h%):gA%=
shell_HeapBlockFetch(8):gA%!0=h%:gA%!4=-1
shell_Tracef0("StaticWindowListAddHandle:Searching for window handle &"+
~h%):d%=
shell_SearchStatic(h%):
d%=-1
shell_Tracef0("StaticWindowListAddHandle:Not found - adding window handle to list"):
shell_Tracef0("StaticWindowListAddHandle:Window handle is &"+
~h%):d%=
shell_SearchStatic(0):
d%=-1
shell_Tracef0("StaticWindowListAddHandle:Extending window handle list"):g%=0:
gA%!g%<>-1:g%+=4:
:gA%=
shell_HeapBlockExtend(gA%,4):c%=gA%+g%:c%!0=h%:c%!4=-1
shell_Tracef0("StaticWindowListAddHandle:Found unused space in list"):c%=gA%+d%:c%!0=h%
shell_RemoveStaticWindowFromList(BA%):
d%,g%,m%:m%=
:g%=0:
gA%>0
gA%!g%=BA%
:gA%!g%=0
:g%+=4:
gA%!g%<>-1
shell_UpdateStaticWindowHandle(VA%,MA%):
shell_Tracef0("UpdateStaticWindowHandle:Correcting static window list.."):d%=
shell_SearchStatic(VA%):gA%!d%=MA%:
shell_SearchStatic(h%):
m%,g%:m%=-1:g%=0:
gA%<>0
gA%!g%<>-1:
gA%!g%=h%
m%=g%:=m%
:g%+=4:
shell_IsWindowStatic(BA%):
-1,-2:w%=
_U%!20:w%=
shell_SearchStatic(BA%)>-1